- 締切済み
Exelで共通の語句を抽出するマクロを教えて下さい
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- tom04
- ベストアンサー率49% (2537/5117)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! >共通する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)
質問の画像があまり見えないので想像の部分があります。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
お礼
御礼が遅くなり申し訳ございません。 ご丁寧にご説明いただきありがとうございます。 ご教示通りに関数の作成にチャレンジしてみます。 本当にありがとうございました。
お礼
ご回答いただきありがとうございます。 これまでどう考えて良いか全くわかりませんでししたが、進め方が見えてきました。 本当にありがとうございました。