
いつもお世話になっております。
連想配列の質問ですが、
下記のように書き出したいのですが、
おしえてくれませんでしょうか
ReDim Preserve Vz(1 To UBound(Vz), 1 To 2)
に格納したものを
Cells(i, "i") = Vz(iB, 1)
Cells(i, "J") = Vz(iB, 2)
ように書きだしたいのです。
おしえてくれませんでしょうか
Sub fa()
Dim Dic As Object
Dim Vz As Variant, Vk
Dim iA As Long, iB As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Range("B2").CurrentRegion
Vk = .Value
End With
For iA = UBound(Vk) To 3 Step -1
If (Vk(iA, 1)) <> "" Then _
Dic(Vk(iA, 1)) = iA
Next
With ActiveSheet
With .Range("H2", .Cells(Rows.Count, "H").End(xlUp))
Vz = .Value
ReDim Preserve Vz(1 To UBound(Vz), 1 To 2)
For iB = 2 To UBound(Vz)
iA = Dic(Vz(iB, 1))
If (iA = 0) Then
Vz(iB, 1) = ""
Else
Vz(iB, 1) = Vk(iA, 2)
Vz(iB, 2) = Vk(iA, 3)
End If
Cells(i, "i") = Vz(iB, 1)
Cells(i, "J") = Vz(iB, 2)
Next
End With
End With
End Sub

No.1ベストアンサー
- 回答日時:
連想配列ではなく2次元配列のように思いますけど、配列のインデックス№はシートの行番号とは一致しませんよ。
⇒1行目に項目行があってその項目名を取得するなら別ですけど。
UBound と共に LBound も知っておくと良いかも。
【VBA入門】UBound、LBound関数で配列の要素数を取得
https://www.sejuku.net/blog/29317
あとは配列変数:Vz は最後に Resize を用いて一括出力しないと使用している意味が薄まるかなと。
いつもお世話になっております
変更前
For iB =1 To UBound(Vz)
変更後
For iB = LBound(Vz) To UBound(Vz)
うまくいきました。
ありがとうございました。
ReDim Preserve Vz(1 To UBound(Vz), 1 To 2)
For iB = LBound(Vz) To UBound(Vz)
iA = Dic(Vz(iB, 1))
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
みんなに挑戦してほしい「色彩検定」
これまで多くの方々が受検したが「色彩検定」。その目的や活用法は人それぞれ。今回は、色彩検定に影響を受けた男女3名にインタビュー。
-
VBAの質問です msg = ws.Cells(r, A").Value & "日に" & ws."
Visual Basic(VBA)
-
VBA CSV取り込みについて
Visual Basic(VBA)
-
VBA public変数はどのようなことをしたら解放されますか?
Visual Basic(VBA)
-
4
Excelマクロのコードができる方に質問します。
Visual Basic(VBA)
-
5
VBAのコードについて
Visual Basic(VBA)
-
6
excel2021で実行できないマクロ。どこを直したらいいのか
Visual Basic(VBA)
-
7
VBAの「for i=1 to cells(…」と「i=cells(…」の違いを教えてください。
Visual Basic(VBA)
-
8
VBAで教えて頂きたいのですが?
Visual Basic(VBA)
-
9
Vba 電卓のテキストボックスに上下に分かれた分数の表示方法
Visual Basic(VBA)
-
10
VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか?
Visual Basic(VBA)
-
11
VBA 自作カレンダー コマンドボタンについて
Visual Basic(VBA)
-
12
エクセル以外で麻雀の成績を管理する方法(プログラミングでやりたい)
その他(プログラミング・Web制作)
-
13
エクセルVBA タイマーを起こす呪文
Visual Basic(VBA)
-
14
VBA sum ワークシートChange
Visual Basic(VBA)
-
15
フォルダが作成
Visual Basic(VBA)
-
16
【ExcelVBA】動的にボタン、ボタン名を生成できますか?
Visual Basic(VBA)
-
17
【VBA】特定の文字で改行(次の行)に行きたい。
Visual Basic(VBA)
-
18
エラー処理
Visual Basic(VBA)
-
19
何故ただのvariant型と定義された配列はvariant型の配列の引数に代入できないのですか?
Visual Basic(VBA)
-
20
【VBA】Excelで罫線を引きたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
perlのエディタでおすすめを教...
-
5
テキストファイルから日本語部...
-
6
awkスクリプトでダブルクォーテ...
-
7
pandasでまとめてインデックス...
-
8
ファイルからある文字列の個数...
-
9
PerlでのUseless use...
-
10
ログファイルを編集する方法は...
-
11
readdir()で得られるファイル・...
-
12
perlでuse utf8でsjisのファイ...
-
13
文字コードの変換(Shift-JISか...
-
14
perlで容量の大きいCSVファイル...
-
15
Excelマクロでフォルダ内のCSV...
-
16
LISPによる横型探索
-
17
ファイルディスクリプタとは?
-
18
CSVが可変長の場合の検索方法
-
19
エラー 'dir.h' : No such fi...
-
20
複数ファイルの読み込みについて
おすすめ情報
公式facebook
公式twitter
いつもお世話になっております。
For i = LBound(Vz) To UBound(Vz)
Cells(i + 1, "i") = Vz(i, 1)
Cells(i + 1, "J") = Vz(i, 2)
Next
でやりましたが、
4だけ 4と表示されます。
4 4
5 沼田 梨恵子 女
6 本多 八洲子 女
7 石井 芙美子 女
8 亀井 水泉 男
9 白井 真樹 女
10 柏木 悠里 女
11 村松 利人 男
Vz は最後に Resize を用いて一括出力しないと使用している意味が薄まるかなと。
なんとなくですが、
ReDim Preserve Vz(1 To UBound(Vz), 1 To 2)
格納して 一気に吐き出す 速さがおちるということですか