[[20210126203338]] 『複数の条件と一致するデータの抽出方法』(あらら) >>BOT

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『複数の条件と一致するデータの抽出方法』(あらら)

A シート
日付 商品 販売数 産地
5月1日 みかん 100 埼玉 
5月1日 みかん 100 神奈川
5月2日 りんご 120 沖縄

Bシート
5月1日 みかん
5月2日 りんご
5月3日 バナナ

 ▪はじめまして、質問お願いいたします!AシートとBシートがあり
Bシートの日付と商品名と一致するものの産地をAシートから抽出する方法を教えてください。ちなみにAシートの商品名のみかんの間にスペースがはいっているのに対してBシートではみかんにスペースがなくてもひっぱってくることができるとたすかります

< 使用 Excel:unknown、使用 OS:Windows10 >


どこに抽出するのでしょうか。
抽出後の状態も提示してください。

(マナ) 2021/01/26(火) 21:12


Bシートの商品の隣の列になります。

(あらら) 2021/01/26(火) 21:17


>5月1日 みかん

この場合は?

(マナ) 2021/01/26(火) 21:20


埼玉になります
(あらら) 2021/01/26(火) 21:29

>5月1日 みかん 100 神奈川

これは、無視してよいのですか

(マナ) 2021/01/26(火) 21:32


すいませ、神奈川は、無視してください
(あらら) 2021/01/26(火) 21:38

マクロでもよければ
 Sub test()
    Dim dic As Object
    Dim tbl As Range
    Dim s As String
    Dim v
    Dim k As Long

    Set dic = CreateObject("scripting.dictionary")

    Set tbl = Worksheets("A").Range("A1").CurrentRegion
    v = tbl.Value

    For k = 1 To UBound(v)
        s = v(k, 1) & vbTab & Replace(Replace(v(k, 2), " ", ""), " ", "")
        dic(s) = v(k, 4)
    Next

    Set tbl = Worksheets("B").Range("A1").CurrentRegion
    v = tbl.Value

    For k = 1 To UBound(v)
        s = v(k, 1) & vbTab & Replace(Replace(v(k, 2), " ", ""), " ", "")
        If dic.exists(s) Then v(k, 3) = dic(s)
    Next
    tbl.Value = v

 End Sub

(マナ) 2021/01/26(火) 21:43


すいません、マクロ以外で関数で教えていただける助かります
(あらら) 2021/01/26(火) 21:50

では、関数が得意な回答者をお待ち下さい

(マナ) 2021/01/26(火) 21:53


はい、ありがとうございます
(あらら) 2021/01/26(火) 22:01

 ちょっと確認だけ

 >Aシートの商品名のみかんの間にスペースがはいっている

 み□か□ん になってるってこと?  ※□はスペース 
 そのスペースは全角、半角どっちですか?

 ・Excelのバージョンは?
 ・Aシートは何行目までデータがあるんですか?

 以上
(笑) 2021/01/26(火) 22:09

スペースは書式の設定で統一できそうです!
エクセルのバージョン2008
シートは500行ぐらいあります
(あらら) 2021/01/26(火) 22:34

 >スペースは書式の設定で統一できそうです!
 よくわかりませんけど、スペースの件は考慮しなくていいってこと?

 考慮しなくてもいいのなら・・・
 Aシート → Sheet1
 Bシート → Sheet2 だとして

 Sheet1
	A	B	C	D	E
1	日付	商品	販売数	産地	
2	5/1	みかん	100	埼玉	
3	5/2	みかん	100	神奈川	
4	5/2	りんご	120	沖縄	
5					

 Sheet2
	A	B	C
1	日付	商品	産地
2	5/1	みかん	埼玉
3	5/2	りんご	沖縄
4	5/3	バナナ	

 C2 =IF(B2="","",IFERROR(LOOKUP(1,0/((Sheet1!$A$2:$A$500=A2)*(Sheet1!$B$2:$B$500=B2)),Sheet1!$D$2:$D$500),""))
 下コピー

 ■作業列を使ってもいいのなら
 Sheet1
 E2 =A2&B2  下コピー

 Sheet2
 C2 =IF(B2="","",IFERROR(INDEX(Sheet1!D:D,MATCH(A2&B2,Sheet1!E:E,0)),""))
 下コピー

 以上
(笑) 2021/01/26(火) 23:07

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.