• ベストアンサー
※ 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/17068)
回答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/22062)
回答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

  • エクセル2つのセルを1つのデータとして一致

    エクセル初心者です。 (1)シートのA列には店舗名(A列には同じ店舗名が複数あります)とB列には数値を入力しています。(2)のシートには(1)シート同様のデータが入力されていますがCとD列に値があります。 (1)シートの同行内のAとB列を1つのデータとして(2)のシートのAとB列が一致したらCとD列の値を(1)シートに返す事は可能でしょうか? (1)シート A列    B列   C列   D列 ヤマダ   25 スズキ   10 ヤマダ   100 (2)シート A列    B列   C列   D列 ヤマダ   25    5    英 スズキ   10    6    独 ヤマダ   100    6 仏 さくら  20    8 英 つたない説明で申し訳ありません。

  • EXCELで2つ条件で1つが部分一致のとき

    Excelの2003バージョンです。 現在使用しているファイル名「会社」シート名「支社」のセルE12に 同じシート上のD12(同じ行ですね)と ファイル名「埼玉」シート名「データ」のA列の中の値と一致(完全一致)して なおかつ、シート名「支社」のF3の値(例・後1、後2)とシート名「データ」の C列の値(例・後1 第23号)と部分一致をした時に 使用中シート「支社」のE12に●、していない時は空白にしたいのです。 ファイル「会社」シート名「支社」 行数 --A列----B列----C列-----D列----E列----F列---- 1                             11223344  (ここに関数)  後1 ファイル「埼玉」シート名「データ」 行数 --A列----B列----C列-----D列----E列----F列---- 10   11223344         後1 第23号  11   11223344         一般会社 第44号  のような場合はE1に●になるようにしたいのです。 それ以外は空白で。 あまり詳しくないので、よろしくお願いします。

  • EXCELで指定した範囲の値を検索し、範囲内に対応する行の見出しを調べるには

    EXCEL2003で、シート内に以下のように値が設定されている場合に、 B1からD4の範囲を検索して値が一致した行のA列の値を求めるには どのようにすればよろしいでしょうか。 たとえば、文字列「EE」で検索して「いいい」を求めたいのです。 A B C D 1 あああ AA CC FF 2 いいい BB EE 3 ううう DD 4 えええ GG HH VLOOKUP関数を使用すれば列内や行内での検索は出来ますが、 複数行列内の検索は出来ないようです。 よろしくお願いします。

  • エクセルのデータから一致するデータを出したい

    エクセルの表から一致するデータに対応する指定列のデータを表示させたいのですがどの関数で設定すればよいのか教えて下さい。 A2からDの30までの表(実際には4000列以上) 1行は見出し A列は1~のナンバリング B列は商品コード(同じコードが複数ある)    ・昇順に並べてある C列は日付け    ・2番目に優先で昇順に D列は文字列 探したい商品コードをB1入力、それに対応するD列の文字列の昇順のトップをD1に表示させたい この内容で伝わるでしょうか オートフィルターで選ぶのも考えたのですが、入力した時その列のある列のデータが瞬時に見たいのです。 よろしくお願いします。

  • エクセル マクロ 複数条件と部分一致

    1対多数の検索 と 複数条件(部分一致と全部一致)のためコードがよくわかりません。 例えば、xlpart、Match、Index、Offset を使い下記の処理ができる方法はありますでしょうか。 下記A~C列のリストがあります。(10000行程度) (Sheet1)   A       B      C    1 0075926  VU    SerialA  2 0623450  VU     SerialA ・ 3 0002356  WM    SerialA  4 0157592  WM    SerialB ・ 5 0023456  WM    SerialB (・・・以下10000行程度続く) (1) Sheet2の検索値A1に部分一致するものを、Sheet1のA列から選ぶ。 (2) 複数の検索結果値がでてしまうので、さらにSheet2のB1と「全部一致」する ものをSheet1のB列から選ぶ。 (3) 上記(1)、(2)の条件を満たすものをSheet1のA列から1つ選ぶ。さらにその行の C列を転記する。(複数該当する場合は上位記載のものでかまいません。) ※数値はエクセルの書式設定で文字列にしてあります。 (検索前のSheet2)   A       B        C 1 7592    WM 2 2345    VU (以下10000行程度続く) (検索後のSheet2)   A      B         C     D 1 7592    WM    0157592  SerialB      ※7592は、Sheet1のA4に該当する。 2 2345    VU    0623450   SerialA     ※2345は、Sheet1のA2に該当する。 (以下10000行程度続く) 部分一致の後の全部一致の複合的なコードの組み方がわかりません。 繰り返し処理(ForやLoop)をよく理解していないからだと思います。どなたかご教示くださいますでしょうか。大変困っておりよろしくお願いいたします。(WindowsXp、Office2003)

  • エクセル 複数条件一致したセルの抽出方法について

    はじめまして。 エクセルの複数条件で一致するセルの抽出方法の質問が幾つかありましたので 参考に試してみましたが上手く計算することができなくて、投稿致しました。 問題が解決すると非常に助かりますので、教えて頂けますでしょうか。 質問内容 エクセル2007を使用しております。 同じ商品を複数社で購入する場合、単価が異なります。 購入先と商品名で一致した場合に単価が参照されるようにしたいです 2つのシート使用しており、1つは■データベースシート、1つは●入力シートとなってます。 ■データベースシートの項目は A列    B列   C列   D列   E列    F列 購入先  〔※〕  〔※〕  品名   〔※〕   単価 AA社             みかん       1,000 BB社            みかん       1,500 CC社            みかん        700 CC社             いちご        5,000 DD社              いちご        3,500 〔※〕B・C・E列にも項目がありますが、質問(単価参照)とは関連がありません。 この項目は他のデータと使うことがありますので、削除や他の列に移動をしない方法が希望です。 ●入力シートの項目も同じです。 A列    B列   C列    D列    E列     F列 購入先  〔※〕  〔※〕   品名    〔※〕    単価 【 (1) 】           【 (2) 】          《 (3) 》 (3)に関数を入力されるように組みたいです。(1)と(2)を入力すると ■データベースシートの「F列」の単価が参照されるイメージです。 分かり難い質問で申し訳ありません。お知恵を頂けますと助かりますので 何卒宜しくお願い致します。 以上

  • エクセル 複数の条件に一致

    複数の条件に一致したセルの内容によって、別のセルに別の文字を自動で表示したいのですが可能でしょうか? 詳細はこのような形で、 【シート1】       A     B       C 1      0001     3/1    有 2      0002     3/1    無 3      0001     3/2    不明 【シート2】       A     B       C 1             3/1      3/2 2      0001       ○      △ 3      0002       ×     "空欄" ・シート2のB2からC3を自動で表示できるようにしたい。 ・シート1のA列とシート2のA列が一致、更にシート1のB列とシート2の1行が一致。 ・シート1のC列が「有」の場合「○」、「無」の場合「×」、「不明」の場合、「△」、「空欄」の場合、「"空欄"」と表示。 知りうる限りの関数を合わせてみましたが、できませんでした。 どなたかいい方法を教えて頂ければと思います。 環境はXPpro、エクセル2000です。 宜しくお願いします。

  • Excelで特定の文字を抜き出す

    Excelで関数を使い、特定の文字列を自動で抜き出し、二つの列に分けたいです。 あいうえお0X =AAA= かきくけこ00 =BBBB= さしすせそ000 =CCC= たちつてと0 =DD= なにぬねの00X =EEE= はひふへほ000 =F= 上記のようにA1~A6に、文字数も文字もバラバラのセル列があったとします。 これを以下のように分解したいです。 例: A1:あいうえお0X =AAA= A2:かきくけこ00 =BBBB=    ↓ 「B1:あいうえお0X」と「C1:AAA」 「B2:かきくけこ00」と「C2:BBBB」 関数を教えて下さい。

  • エクセルで一致するをセルを参照して入力したい

    お世話になります。 わかりにくいタイトルで申し訳ないのですが以下の場合について教えてください。 A列に1,2,3,4,5・・・というように重複しない数字が入っています。 C列にも1,3,4・・・など重複しない数字が入っています。(1と3の間に空白セルはない) D列には任意の文字が入っています。 C列の数字と同じ数字は必ずA列には存在します。(逆にA列の数字がすべてC列にあるわけではない) ここであいているB列にその左のA列と同じ数字をC列から探し、その右側のD列の文字を入力したいのです。 (A列と同じ数字がC列にない場合は空白にする。) 例 A1:1 C列で「1」が入っているセルがC1、D1:みかん の場合 B1:みかん とする A2:2 C列に2がない場合 B2:空白 A3:3 C列で「3」が入っているセルがC2、D2:りんご の場合 B3:りんご とする この場合B列にはどのような計算式を入れておけばよいのでしょうか。 よろしくお願いします。 Excel2002です。

  • 条件に一致したデータ数について

    該当する商品の合計数を所得したいのですが検出方法が分かりませんので教えて下さい。 商品マスタ(A)と売上げデータ(B)に下記のデータがあります。AとBの関係は、1:nになります。 Bの商品とAの商品が一致した場合にAの商品が売れたと判断します。 最終的にAの一致した商品数を取得したいのですが、Bの検出数が反映されてしまい正常に一致した件数を取得できません。いろいろ試みましたけどダメでした。どなたか、ご享受下さい。 ---------------- 商品マスタ(A) ---------------- AA BB CC DD EE FF ---------------- 売上げデータ(B) ---------------- AA 06/9/10 BB 06/9/10 BB 06/9/11 DD 06/9/12 AA 06/9/14 BB 06/9/14 AA 06/9/15 AA 06/9/16 BB 06/9/17 BB 06/9/17 BB 06/9/18 ---------------- 結果 ---------------- 3 ※--- 補 足 --- Bを商品毎にグループ化してカウントすると、 AA = 4件 BB = 6件 CC = 0件 DD = 1件 EE = 0件 FF = 0件 になります。売上げ件数が、0件以上の商品は、AA、BB、DDの3商品になります。この3の値を取得したい訳です。

専門家に質問してみよう