• 締切済み

Exelで共通の語句を抽出するマクロを教えて下さい

Exelの表である列で共通するn個の文字列があった場合に指定の列に数字を表記させるマクロがありましたらお教えください。 添付の画像では、C列の品名で「なし」「ぶどう」で共通した場合、A列のチェック欄に「なし」に1、「ぶどう」に2と表示させるイメージです。 共通する文字列に位置はセルの任意の可能性があり、たとえば5個だったり7個と変更できるようにできればベターです。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です。 画像をアップするのを忘れていました。 どうもごめんなさい。m(_ _)m

atom9648
質問者

お礼

ご回答いただきありがとうございます。 これまでどう考えて良いか全くわかりませんでししたが、進め方が見えてきました。 本当にありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! >共通するn個の文字列があった場合に指定の列に数字を表記させる Excel的には文字列をどこで区切ってよいのか判断できませんので こちらで決めてやる必要があります。 そこで↓の画像のように「共通する文字列」の表を作成しておいた上での一例です。 シートモジュールです Sub Sample1() Dim i As Long, k As Long For i = 2 To Cells(Rows.Count, "C").End(xlUp).Row For k = 2 To Cells(Rows.Count, "G").End(xlUp).Row If InStr(Cells(i, "C"), Cells(k, "G")) > 0 Then Cells(i, "A") = Cells(k, "H") End If Next k Next i End Sub この程度しか思いつきません。m(_ _)m

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

質問の画像があまり見えないので想像の部分があります。Excel2010です。 「なし」や「ぶどう」が含まれる品名に関して、同じように「なし」や「ぶどう」が含まれる品名はそのほか何個あるかを計算したいということでしょうか。 マクロというより、VBA(マクロ)を使ったユーザー定義関数が適切でしょう。 マクロで「なし」や「ぶどう」で照合し、カウントさせる必要があります。そのために「品名区分」として、シートに表を作りました。K2:K3になります。必要な分増やしてください。添付図を見てください。 添付図で、チェック欄G2の算式は、 =CountKubun(I2,$C$2:$C$21,$K$2:$K$3) になります。下にコピーします。 ユーザー定義関数なので、関数をセットすればマクロを実行する必要はありません。(データ行が増えたりした場合は算式の修正と再計算(F9)はしてください。)I列の品名とC列の全品名、K列の作った表を使っています。 以下を標準モジュールに貼り付けます。 Function CountKubun(elm As String, ALL_Table As Range, KUBUN_Table As Range)   Dim rg1 As Range, rg2 As Range   Dim cnt As Integer      Application.Volatile      For Each rg1 In KUBUN_Table     If InStr(elm, rg1.Value) > 0 Then       For Each rg2 In ALL_Table         If InStr(rg2.Value, rg1.Value) > 0 Then           cnt = cnt + 1         End If       Next     End If   Next      If cnt > 0 Then     CountKubun = cnt - 1   Else     CountKubun = ""   End If End Function

atom9648
質問者

お礼

御礼が遅くなり申し訳ございません。 ご丁寧にご説明いただきありがとうございます。 ご教示通りに関数の作成にチャレンジしてみます。 本当にありがとうございました。

関連するQ&A

専門家に質問してみよう