• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:該当列○の時その文言と類義語をセットし複数列分結合)

エクセルで商品の性質を取得するマクロを作成したい

このQ&Aのポイント
  • エクセルで商品の番号に該当する性質の文字と類義語を取得し、数珠つなぎにします。
  • 商品の番号と性質が記載されたエクセルで、性質に該当する場合は文字と類義語を取得し、別の列に連結します。
  • この要件を満たすマクロを作成し、結果をスマートに取得できるようにしたい。

質問者が選んだベストアンサー

  • ベストアンサー
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.1

添付してある画像がよく見えなかったので、私の方で、勝手にエクセルのファイルを作りました。 私の作った、エクセルの表で、プログラムを作りました。 まず、B列が「Name(商品名)」とし、 E~X列が「代表Word」で、「○」を入力するところ、 Z列が、結果を表示する列、 AA列が、「代表Word」そのもの AB~AF列が「類義語」です。 この条件下で、以下のプログラムを実行すると Z列に結果が出力されますが、 今回は、代表Wordごとに「/」ではなく「◆」を前に付けて 分かりやすくしております。 01:Option Explicit 02:Sub Main() 03:  Dim n As String 04:  Dim s As String 05:  Dim e As Integer 06:  Dim i As Integer 07:  Dim j As Integer 08:  Dim k As Integer 09:  Dim l As Integer 10:  e = Range("B1").End(xlDown).Row 11:  For i = 2 To e 12:    For j = 5 To 26 13:     If InStr(Cells(i, j).Value, "○") > 0 Then 14:        n = Cells(1, j).Value 15:        For k = 2 To 21 16:          If Trim(Cells(k, 27).Value) = n Then 17:            If Len(s) > 1 Then 18:              n = "◆" & n 19:            End If 20:            For l = 28 To 32 21:              If Trim(Cells(k, l)) <> "" Then 22:                n = n & "/" & Trim(Cells(k, l).Value) 23:              End If 24:            Next l 25:          End If 26:        Next k 27:      End If 28:      s = s & n 29:      n = "" 30:    Next j 31:    Cells(i, 26).Value = s 32:    s = "" 33:  Next i 34:End Sub 11行目は、「商品名」を1つずつ、読み込んでいます。 12~13行目は、「○」があるか、調べ、14行目で、 「代表Word」を取得しています。 15~16行目で、「代表Word」を探しています。 17~19行目のIf文は、2回目以降の代表Wordの頭に「◆」を 付けていますが、ここを「/」にすればそちらのご要望どおりになります。 20~24行目で、類義語を取得し、「/」でくっつけています。 今回は、「Vlookup」を使わず、 すべて「For~Next」で処理しておりますので、 読み込む最終列が変わるたびに、 数字を変更しなければならなくなってしまっている点で、 極めて稚拙なプログラムですが、 (その行の最終列を読み取るようにすべきでした) 一応、結果は出ていると思います。 このプログラムを、参考にして頂ければ、幸いです。

ARIES10
質問者

お礼

おはようございます。 このたびはご回答誠にありがとうございました。 プログラムのみならず、各行の意味までご丁寧に教えて頂き、 ご親切さに感動しました。 確かに、表をLOOPでなめまわしていき、その表内の各セルと、 探したい文字がセットされているセルを比較すれば まさにVLOOKUPと同じ、”合致するセルを探す”ことが実現できますね! あとは連結で文字を取得していく、と。 完全に理解できました。 結果もバッチリでした。 ありがとうございました。

ARIES10
質問者

補足

おはようございます。 すみません、以前利用していた時とOKWAVEのレイアウトが変わっており、 前から見難かった画像がさらに見難くなっていました。 しかし回答がつくまで補足もできない仕様になっていて、申し訳なく思うのみでした。 ご自身で表まで用意していただき、誠にありがとうございました。