8

「配列」をかじりました。
敷居の低いライブラリのお裾分けです。
あいにくわたし自身はシナリオ共有サークルへは上げられません。
もし使えそうなら、どなたかしれっと上げてください。
「改善/進化/発展させてみた」の便乗もウェルカムです。

 

配列の経験

  • 配列はVBAとかで使ったことがある程度
  • WinActorの辞書と配列関連ライブラリは、サンプルシナリオで使ったことがある程度

 

配列のイメージ

  • 効率的で爆速
  • インデックス(ゼロ始まり)で数える
  • 要素に一括で定型処理(計算とか文字列加工等)を施すのに有利な手法

 

WinActor×配列への思い

  • 敷居がもっと低ければ良いのに、、
  • Excelから1セルずつ読み取るデータがベースだと、爆速効果がだいぶ薄れちゃうんじゃなかろうか、、
  • 1000件とか10000件とかだとどうなんだろう、、
  • ブラックボックス感が強い、、
     
    → 機能限定で、爆速のまま、敷居を低くしてみました!

 

きっかけのスレッド

https://winactor.com/questions/question/配列の一括登録方法/

 

活用イメージ

  • 改行区切りのテキストファイルを配列に一括登録
  • 任意のインデックスの値を爆速で取得
  • ループ*で高速に値を設定(表計算やWebサイトを想定)
    * 取得するほうのループ(順次処理)は不可避っぽい

 

パーツ構成

  1. テキストファイル読込
  2. 配列操作 ← 今回作ってみたライブラリ
  3. 待機ボックス

 

配列操作のスクリプト

  • ※ 「スクリプト実行」のスクリプトタブに貼り付けて使います。

' 改行区切りのリストを取得
newLine = !読み込みデータ!
' カンマ区切りに変換
csv = Replace(newLine, vbCrLf, ",")
' 配列に変換
arr = Split(csv, ",")
' インデックスの値を取得
SetUmsVariable $値$ , arr(!インデックス!)

 

注釈タブのテキスト案

改行区切りのテキストを一次元配列に取り込み、
インデックス指定で値を取り出します。

 

機能対応状況

  • ※ ダンプ
  • ※ 初期化
  • ◎ 情報取得
  • ◎ 情報挿入
  • ※ 情報更新
  • ※ 指定インデックスの情報初期化

凡例

  • ◎ ほぼ互換
  • ※ 未対応(きっと手が届く)

 

リファレンスサイト

配列の使い方 | VBScript さんま屋
http://sammaya.jugem.jp/?eid=6

 

所要時間計測(体内時計)

  • 配列に読み込んだ件数
    A. 1100件
    B. 10000件
  • 読み込みから取得を試したインデックス
    ①3
    ②1050
    ③9900

  A B
① ◎ 10秒
② ◎ 10秒
③ ー 10秒

凡例
◎ 一瞬
ー 対象外

変数の文字数制限は適宜解除してください。

https://winactor.com/questions/?q=1024

 

使用感

  • 実務では1000件も扱えれば十分な場面が多そう
  • 効率は配列の要素数に比例しそう

 

改善/進化/発展の方向性

  • 実用的な使いかたの特定
  • 実用性を踏まえた、設定項目等の仕様変更
  • 場合によっては、テキスト読み込みとがっちゃんこして、1ライブラリ化
  • 二次元配列への対応

 

配列関連のライブラリがいくつかリリースされてるので、時間を見つけて比較しておこうと思います。

https://winactor.biz/knowledge/?search=配列

 

配列は話題には上がるものの、実用を目指してそうなスレッドは案外少ないようです。

(一次元配列)

https://winactor.com/questions/question/フォルダ内のファイル一覧を配列に入れ、1個ずつ/

https://winactor.com/questions/?q=取得した配列の使い方

(二次元配列)

https://winactor.com/questions/?q=Excel%20範囲を一括で2次元配列に取込、2次元配列を成型後%20Excel%20に一括貼付したい

https://winactor.com/questions/question/二重ループを使用してexcelファイルのセルを読み取/

anothersolution 回答した質問
回答とコメントは、会員登録(無料)で閲覧できるようになります。