• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 条件範囲データと特定のセルの部分一致)

エクセル 条件範囲データと特定のセルの部分一致

このQ&Aのポイント
  • エクセルで条件範囲のデータと特定のセルの部分一致を取得する方法を教えてください。
  • A列とB列にはデータベースがあり、C列のスラッシュで区切られた3文字が集計に必要な情報です。C列の3文字がA列のどれかと一致した場合、同行のB列の文字をD列に表示させたいです。
  • 一般的な関数では部分一致ができず、vlookupやindex matchでも解決できません。どのようにすれば部分一致を取得できるでしょうか?

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

  • ベストアンサー
回答No.5

ありなしで良いの? =IF(COUNT(MATCH(MID(C1,{1,5,9,13},3),A:A,0)),B1,"X") =INDEX(B:B,-LOOKUP(1,-MATCH(MID(C1,{1,5,9,13},3),A:A,0))) だと思っていたから 答えと合わなくて困惑してしまった

kirinyellow
質問者

お礼

できればデータベースにあるB列の情報を返したかったのですが、OXでも関数がシンプルだったのでベストアンサーとさせていただきました。ありがとうございます!

すると、全ての回答が全文表示されます。

その他の回答 (6)

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

こんばんは! VBAでの一例です。 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long For i = 1 To Cells(Rows.Count, 3).End(xlUp).Row For j = 1 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 3) Like "*" & Cells(j, 1) & "*" Then Cells(i, 4) = Cells(i, 2) End If If Cells(i, 4) = "" Then Cells(i, 4) = "該当なし" End If Next j Next i End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m

kirinyellow
質問者

お礼

回答いただき、ありがとうございました。今後の参考にさせていただきます。

すると、全ての回答が全文表示されます。
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

 以下は、A列のデーターに重複するものが無いとして、C列の1つのセルに入力されている3文字ずつの組は、1つのセルに5組までしか入力されていない場合に関して対応する方法です。  尚、各セル内の何れかの3文字の内、A列のデータベースに一致するものが複数存在する場合には、同行のB列の文字列を"/"で区切って表示させています。  まず、D1セルに次の関数を入力して下さい。 =IF(AND($C1<>"",SUMPRODUCT(COUNTIF($C1,"*"&$A$1:INDEX($A:$A,MATCH("゛",$A:$A,-1))&"*")*1)=0),"×","")&REPLACE(IF(OR(MID($C1,1,3)="",COUNTIF($A:$A,MID($C1,1,3))=0),"","/"&VLOOKUP(MID($C1,1,3),$A:$B,2,FALSE))&IF(OR(MID($C1,5,3)="",COUNTIF($A:$A,MID($C1,5,3))=0),"","/"&VLOOKUP(MID($C1,5,3),$A:$B,2,FALSE))&IF(OR(MID($C1,9,3)="",COUNTIF($A:$A,MID($C1,9,3))=0),"","/"&VLOOKUP(MID($C1,9,3),$A:$B,2,FALSE))&IF(OR(MID($C1,13,3)="",COUNTIF($A:$A,MID($C1,13,3))=0),"","/"&VLOOKUP(MID($C1,13,3),$A:$B,2,FALSE))&IF(OR(MID($C1,17,3)="",COUNTIF($A:$A,MID($C1,17,3))=0),"","/"&VLOOKUP(MID($C1,17,3),$A:$B,2,FALSE)),1,1,)  次に、D1セルをコピーして、D2以下に貼り付けて下さい。

kirinyellow
質問者

お礼

回答いただき、ありがとうございました。今後の参考にさせていただきます。

すると、全ての回答が全文表示されます。
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

補足をお願いします。 ・D列の期待値は、D3=BB、D4=AA、D6=BB or CCになりそうだ如何でしょうか。 ・又、D6のように複数存在する場合はどうするのでしょうか。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

この程度になるとVBAを使わないと、関数では出来ないか、式が複雑になりすぎるように予想する。 VBAの経験はあるのか。 もう少し関数でも出来るように基データを簡単に出来ないか考えるべきでは、と思う。特にC列データ。 C列データが1語ずつ縦に並んでおれば、普通の問題になりそう。 質問文も同行2語で該当有りのときの処理をどうするかがもれているのでは。 データ例の書き方も A-D列 D列は望む結果 ABC AA NXE/MME DEF BB LEC/CCE/BNE/ZEX AXE CC DEF/CCE/BBE BB MNE DD MME/ABC/EFB AA BEH EE EEA/BBC/EEA LXE FF XXA/DEF/AXE/XEA CC のように書き、D列の出し方を文章で説明するほうが判りやすいのでは。 実例内容も文字記号(NXEのような)のようなものでなく。実際の意味を連想させる例を挙げたほうが良い。 参考 Sub test02() d = Range("C65536").End(xlUp).Row 'MsgBox d k = 1 For i = 1 To d y = Cells(i, "C") x = Split(y, "/") For j = 0 To UBound(x) With Worksheets("Sheet1") Set r = .Range("A:A").Find(x(j)) If r Is Nothing Then MsgBox x(j) & "見つかりません" Else MsgBox r.Row .Cells(i, "D") = .Cells(r.Row, "B") End If End With Next j Next i End Sub 上記は ・該当無しのXが入ってない、 ・第6行のDEF,AXEの両方街頭あるが上書きしているので、CCになっている など不十分だが参考に。しかしVBAの初心者には、直ちには難しいと思う。

kirinyellow
質問者

お礼

ありがとうございます。似たようなマクロで試したのですが、フリーズしてしまったので関数で探していた次第です。参考にさせていただきます・

すると、全ての回答が全文表示されます。
  • aokii
  • ベストアンサー率23% (5210/22063)
回答No.2

D列にだけ一つの式を入れると長くなるので、式が解りやすいように、E列からL列までをワークエリアにして、以下の方法でいかがでしょう。 D列=IF(SUM(E1:H1)=0,"X",B1) E列=IF(ISNA(VLOOKUP(I1,$A$1:$B$6,1,FALSE)),0,1) F列=E列からドラッグコピー G列=E列からドラッグコピー H列=E列からドラッグコピー I列=MID($C1,1,3) J列=I列からドラッグコピー K列=I列からドラッグコピー L列=I列からドラッグコピー

kirinyellow
質問者

お礼

ありがとうございます。今後の参考にさせていただきます。

すると、全ての回答が全文表示されます。
  • MASUKUBO
  • ベストアンサー率22% (4/18)
回答No.1

D1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(IF(LEN(C1)>=3,COUNTIF(A:A,MID(C1,1,3)),0)+IF(LEN(C1)>=7,COUNTIF(A:A,MID(C1,5,3)),0)+IF(LEN(C1)>=11,COUNTIF(A:A,MID(C1,9,3)),0)+IF(LEN(C1)>=15,COUNTIF(A:A,MID(C1,12,3)),0)>0,B1,"") または =IF(IF(LEN(C1)>=3,COUNTIF(A:A,MID(C1,1,3)),0)+IF(LEN(C1)>=7,COUNTIF(A:A,MID(C1,5,3)),0)+IF(LEN(C1)>=11,COUNTIF(A:A,MID(C1,9,3)),0)+IF(LEN(C1)>=15,COUNTIF(A:A,MID(C1,12,3)),0)>0,B1,"X")

kirinyellow
質問者

お礼

ありがとうございます。今後の参考にさせていただきます。

すると、全ての回答が全文表示されます。

関連するQ&A