こんばんは
以下のようにmyListの中に、「果物」、「県名」、「月名」にカテゴリー分類された配列があります。
そして、Recipe配列の中に記載してある、それぞれの要素がmyListのどのカテゴリーに分類されているかを検索し、最終的には、それぞれのカテゴリーに分類された中身を表示したいのです。
下記の例では、最終的にDebug.printにて
果物 = りんご、いちご、バナナ
県名 = 静岡
と表示したいのです。(該当するものがないカテゴリー(今回は月名)は表示しない)
Filter関数にて、要素がカテゴリーリストに存在するかどうかはできたのですが、最終的にカテゴライズして表示する方法がわかりませんでした。
すみませんが、教えていただけると幸いです。
Sub Test()
Dim myList , Recipe
myList = Array( _
Array("メロン", "りんご", "バナナ", "ナシ", "いちご"), _
Array("神奈川", "東京", "静岡", "千葉", "埼玉"), _
Array("1月", "2月", "3月", "4月", "5月") _
)
Recipe = Array("りんご", "静岡", "いちご","バナナ")
End Sub
No.1ベストアンサー
- 回答日時:
雰囲気以下でどうなりますか
提示あった myList 内容では、「果物」等との関連付けができてないので変更
Samp1 では、静岡、静岡
Samp2 では、静岡
なお、どちらともカテゴリを求める時には、「りんご」「リンゴ」は同じと解釈
Samp1 では、「りんご」「リンゴ」は別表示
Samp2 では、同じものとして先に出現した文字列で
結果は
果物 = りんご、いちご、バナナ、リンゴ
県名 = 静岡、静岡
果物 = りんご、いちご、バナナ
県名 = 静岡
Sub Test()
Dim myList, Recipe
myList = Array( _
Array("果物", Array("メロン", "りんご", "バナナ", "ナシ", "いちご")), _
Array("県名", Array("神奈川", "東京", "静岡", "千葉", "埼玉")), _
Array("月名", Array("1月", "2月", "3月", "4月", "5月")) _
)
Recipe = Array("りんご", "静岡", "いちご", "バナナ", "リンゴ", "静岡")
Call Samp1(myList, Recipe)
Call Samp2(myList, Recipe)
End Sub
Public Sub Samp1(myList As Variant, Recipe As Variant)
Dim dic As Object, dicL As Object
Dim vK As Variant, v As Variant
Dim i As Long
Set dic = CreateObject("Scripting.Dictionary")
Set dicL = CreateObject("Scripting.Dictionary")
dicL.CompareMode = vbTextCompare
For Each vK In myList
For Each v In vK(1)
dicL(v) = vK(0)
Next
Next
For Each v In Recipe
vK = dicL(v)
If (IsEmpty(vK)) Then vK = "他"
If (Not dic.Exists(vK)) Then
dic.Add vK, CreateObject("Scripting.Dictionary")
End If
i = dic(vK).Count
dic(vK)(i) = v
Next
For Each vK In dic.Keys
Debug.Print vK & " = " & Join(dic(vK).Items, "、")
Next
Set dic = Nothing
Set dicL = Nothing
End Sub
Public Sub Samp2(myList As Variant, Recipe As Variant)
Dim dic As Object, dicL As Object
Dim vK As Variant, v As Variant
Set dic = CreateObject("Scripting.Dictionary")
Set dicL = CreateObject("Scripting.Dictionary")
dicL.CompareMode = vbTextCompare
For Each vK In myList
For Each v In vK(1)
dicL(v) = vK(0)
Next
Next
For Each v In Recipe
vK = dicL(v)
If (IsEmpty(vK)) Then vK = "他"
If (Not dic.Exists(vK)) Then
dic.Add vK, CreateObject("Scripting.Dictionary")
dic(vK).CompareMode = vbTextCompare
End If
dic(vK)(v) = Empty
Next
For Each vK In dic.Keys
Debug.Print vK & " = " & Join(dic(vK).Keys, "、")
Next
Set dic = Nothing
Set dicL = Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) シートを選択して、1つのPDFにしたいのですが。 5 2022/10/03 20:18
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) userformでSheetを選択して開くコード 1 2023/05/15 16:27
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) リストボックス セルの値を取得する 1 2022/05/21 20:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
リストボックスに縦スクロール...
-
二次元配列のインデックスについて
-
二次元配列における要素数のは...
-
perlで2次元配列をサブルーチ...
-
可変長配列を、動的確保した固...
-
マクロ Publicでの配列定義
-
Excel VBA ユーザーフォームの...
-
2次元配列or複数回のファイル読...
-
配列を初期化する時ってどうす...
-
Strawberry Perl for Windows ...
-
fortran
-
perl qw(aaa bbb ccc)[$hoge]...
-
文字列の分割について
-
ファイル名に日付・時刻を付与...
-
エクセルVBAでTransposeの不思議
-
Dim flag(4) as boolean で配列...
-
画面を強制的に再描画させる方法
-
VBAで3秒だけ時間を止めたい
-
vba
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
二次元配列のインデックスについて
-
VBAのautofilter、criteriaの配...
-
Excel VBA ユーザーフォームの...
-
二次元配列における要素数のは...
-
マクロ Publicでの配列定義
-
Strawberry Perl for Windows ...
-
リストボックスに縦スクロール...
-
クラスに配列を渡す方法
-
Dim flag(4) as boolean で配列...
-
エクセルVBAでTransposeの不思議
-
perlで2次元配列をサブルーチ...
-
perlで配列の要素が空なのを知...
-
perl 配列の要素数について
-
組み合わせについての質問です...
-
隣同士の数字を足し合わせる
-
複数の配列の全ての組み合わせ...
-
perl 初等プログラミングについて
-
jcode->jfold で禁則処理
-
一致する要素が格納されている...
-
チェックボックスのperlでの値...
おすすめ情報
Recipe配列の中に重複している要素がある場合もあります。
例えば
Recipe = Array("りんご", "静岡", "いちご","バナナ","静岡")
のような場合です。
この場合、重複していても表示はしたくて
果物 = りんご、いちご、バナナ
県名 = 静岡、静岡
としたいのです。