質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

2回答

3152閲覧

二次元配列のしぼりこみ

kingdam

総合スコア6

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2020/01/20 00:09

前提・実現したいこと

vbscriptでちょっとした
業務ツールを作成しているのですが
下記のような二次元配列を
別の配列に絞り込んで代入したいです。
・aがつくものだけを
ao(ii,ll)へ代入させたいです。

aka(0,0)=aリンゴ
aka(0,1)=bリンゴ
aka(0,2)=aリンゴ
aka(1,0)=aバナナ
aka(1,1)=bバナナ
aka(1,2)=cバナナ
aka(1,3)=aバナナ

   ・

結果
ao(0.0)=aリンゴ
ao(0.1)=aリンゴ
ao(1.0)=aバナナ
ao(1.1)=aバナナ


と aoの配列にaが付くものだけに
したいです。

vbsで条件付きで代入する方法をご教授
いただけないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttyp03

2020/01/20 00:15

情報は正確に過不足なく記入してください。 (0.0) → (0,0) aが付くのは先頭のみ?部分一致でも? (0,n)内に対象データがなかったらaoのほうは詰める?詰めない?
kingdam

2020/01/20 01:13

誤記すみません。 aがつくのは、部分一致でも対象です。 対象がなかったら詰めてもらってかまいません。 すみませんがお願いします
guest

回答2

0

ベストアンサー

VBSCriptで配列操作は面倒ですね。
とりあえずベタな感じで書いてみましたがこんなんでよいでしょうか?
尚、VBScriptの特性で歯抜けの要素ができるのはご了承ください。
例えば下記のデータではaka(0)には対象データが1個ですが、aka(2)には2個あるので、二次元目の要素数は2個できます。
できますが、aka(0,1)は空データとなります。

VBScript

1Dim aka(2,3) 2aka(0,0)="aリンゴ" 3aka(0,1)="bリンゴ" 4aka(0,2)="dリンゴ" 5aka(1,0)="aバナナ" 6aka(1,1)="bバナナ" 7aka(1,2)="cバナナ" 8aka(1,3)="aバナナ" 9aka(2,0)="cバナナ" 10aka(2,1)="dバナナ" 11aka(2,2)="eバナナ" 12 13Dim cnty 14Dim cntx 15Dim xmax 16Dim flg 17 18' akaと同じサイズの作業領域 19ReDim tmp(UBound(aka,1), UBound(aka,2)) 20 21' tmp配列に対象データを抜き出しつつ件数をカウント 22cnty = 0 23xmax = 0 24For y = 0 To UBound(aka,1) 25 flg = 0 26 cntx = 0 27 For x = 0 To UBound(aka,2) 28 If InStr(aka(y,x), "a") > 0 Then 29 flg = 1 30 tmp(cnty,cntx) = aka(y,x) 31 cntx = cntx + 1 32 End If 33 Next 34 If flg = 1 Then 35 cnty = cnty + 1 36 If cntx > xmax Then 37 xmax = cntx 38 End If 39 End If 40Next 41 42' ao配列を対象データ数分用意 43ReDim ao(cnty - 1, xmax - 1) 44 45' tmpからaoに詰めなおす 46For y = 0 To UBound(ao,1) 47 For x = 0 To UBound(ao,2) 48 ao(y,x) = tmp(y,x) 49 Next 50Next 51 52' 結果確認 53For y = 0 To UBound(ao,1) 54 For x = 0 To UBound(ao,2) 55 wscript.echo y,x,ao(y,x) 56 Next 57Next

実行結果
0 0 aリンゴ
0 1
1 0 aバナナ
1 1 aバナナ

投稿2020/01/20 02:26

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

条件付きで代入する方法

文字列の左から文字を得るLeft関数と、If文を使います。

VBS

1If Left(~,1) = "a" Then 2 ~~~ 3End If

投稿2020/01/20 00:37

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問