|
▼みけ さん:
こんばんは。
ユーザー定義関数ではいけませんか?
例えば、
セルA1から、以下のようなデータが入力されていたとしましょう。
A B C D
品名 コード 支店名 商品名
C 100 B店 商品1
A 100 B店 商品2
A 100 B店 商品3
A 100 B店 商品4
A 100 B店 商品5
A 100 B店 商品6
A 100 B店 商品7
A 100 B店 商品8
A 100 B店 商品9
A 100 B店 商品10
B 100 B店 商品11
B 100 B店 商品12
A 100 B店 商品13
A 100 B店 商品14
A 100 B店 商品15
A 100 B店 商品16
A 100 B店 商品17
同じシートのF1、G1、H1にそれぞれ「A」、「100」、「B店」
入力し、
セルI1には、
「=myfind($A$2:$D$18,4,F1,G1,H1)」指定します。
コードは、一例ですが、標準モジュールに
'====================================================
Function myfind(検索範囲 As Range, 結果列 As Long, ParamArray mycond())
Dim ans()
Dim t_or_f As Boolean
Application.Volatile
With 検索範囲
kdx = 1
For idx = 1 To .Rows.Count
t_or_f = True
For jdx = LBound(mycond()) To UBound(mycond())
If .Cells(idx, jdx + 1).Value <> mycond(jdx) Then
t_or_f = False
Exit For
End If
Next jdx
If t_or_f = True Then
ReDim Preserve ans(1 To kdx)
ans(kdx) = .Cells(idx, 結果列).Value
kdx = kdx + 1
End If
Next idx
myfind = ""
If Not IsEmpty(ans()) Then
myfind = Join(ans(), ",")
End If
End With
End Function
|
|