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

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

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

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1102閲覧

合致する複数の値を取得して再整列する

maguzo

総合スコア57

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/10/18 04:20

現在下記のデータ_sheetのようなデータがございます。
列3と列5を比較して一致している場合には配列(2,(1,2),6,(4,5))のように
列2の2に一致するものは列5の1と2
列2の6に一致するものは列5の4と5
として、最整列シートのように値を並べたいと考えております。

例えばphpでは

php

1for ($i=0;count($arr1)<$i;$i++){ 2 for($j=0;count($arr1)<$j;$j++){ 3 echo $arr[$i][$j]; 4 } 5}

のようにネスト化させることで最整列_シートのような表現ができるのですが
vbaでこのようなアイデアやコードが思い浮かばないため、良い方法等があれば
アドバイスを頂きたく投稿させていただきました。

そもそも、vbaで多次元配列を使うことに向かないような
気もしているのですが宜しくお願い申し上げます。

Abook データ_sheet

列1列2列3列4列5
鉛筆1絵の具1
キャンバス絵の具2絵の具2
バケツぞうきん3帽子3
お皿おはし4コンロ4
コップお水5コンロ5
キッチンコンロ6
ドア呼び鈴7

Abook 最整列_シート

列1列2
21
22
64
65

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

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

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

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

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

guest

回答1

0

ベストアンサー

そもそも、vbaで多次元配列を使うことに向かないような気もしているのですが

そもそもVBAには、PHP等と違って、もともと多次元配列があります。
PHPでは多次元配列がないため、2次元配列の代用として配列の配列を使ったりしますが、そういう必要はありません。

と思ったけど、質問を見ると、多次元配列のことじゃなくて、配列のネストの事ですね。
確かに、配列のネストは出来ませんね。

のようにネスト化させることで

同じようにネストすればいいと思います。

VBA

1k = 1 2for i=1 to xxx 3 for j=1 to xxx 4 if sheet1.cells(i,2) = sheet1.cells(j,4) then 5 sheet2.cells(k,1) = sheet1.cells(i,3) 6 sheet2.cells(k,2) = sheet1.cells(j,5) 7 k = k + 1 8 end if 9 next 10next

投稿2018/10/18 04:28

編集2018/10/18 04:44
otn

総合スコア84423

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

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

maguzo

2018/10/18 06:50

有難うございます。 また、一旦配列に格納してからsheet2を操作する先入観ばかりあったのですが、アドバイスの方法でシンプルに解決することができました。大変勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問