プロが教える店舗&オフィスのセキュリティ対策術

指定した文字列に該当する行を重複しないようにリストを作成する方法についてです。
データ一覧であり、そこから指定した文字列(セル値)に対応する行のリストを重複しないように作成したいと考えております。

 A あいう社 米
 B えお社  パン
 A あいう社 パン
 B あいう社 米

という、データ一覧があったとして、他のセルに「あいう社」と入力すると「A」「B」の値に関係なく「米」と「パン」のみをリストにしたいと考えております。

関数式でもマクロでも良いので方法があればご教示お願い致します。
説明がわかりにくく申し訳ございませんが、よろしくお願い致します。

「【Excel】指定した文字列に該当する行」の質問画像

A 回答 (3件)

こんにちは



ご提示のレイアウトで、H2セルに社名を入力するとして

FILTER関数が使える環境なら、
G3セルに
=IFERROR(INDEX(UNIQUE(FILTER(C3:D99,C3:C99=H2)),ROW(A1:A97),2),"")
を入力することで可能と思います。
(他のセルにはスピルされるはずです)
    • good
    • 0
この回答へのお礼

自分でFILTER関数を使用してみてもうまくできなかったので、ありがとうございます。こちらの関数式を使用することでできました。

お礼日時:2022/03/30 15:03

こんにちは


VBA・・・条件が色々あるので、配置が換わると修正が判り難いかも
添付図の配置でG列ブロックがキーで・・・
H列キーの下に出力する形ですと

Sub test()
Dim record_list As New Collection
Dim r As Range, rr As Range
Dim rKey As Range, vKey As Range, rEnd As Range
Dim n As Long
For Each r In Range(Cells(2, 8), Cells(Rows.Count, 8).End(xlUp))
If r <> "" Then
If rKey Is Nothing Then
Set rKey = r
Else
Set rKey = Union(rKey, r)
End If
End If
Next
Set r = Nothing
For Each r In rKey
If r.Offset(1, -1).End(xlDown).Row = Rows.Count Then
Set rEnd = r.Offset(1, -1)
Else
Set rEnd = r.Offset(1, -1).End(xlDown)
End If
Set vKey = Range(r.Offset(1, -1), rEnd)
n = 0
For Each rr In Range(Cells(3, "D"), Cells(9, "D"))
On Error Resume Next
If r = rr Then
If WorksheetFunction.CountIf(vKey, rr.Offset(, 1)) > 0 Then
record_list.Add rr.Offset(, 1), CStr(rr.Offset(, 1))
If Err.Number = 0 Then
n = n + 1
r.Offset(n) = rr.Offset(, 1)
End If
End If
End If
On Error GoTo 0
Next
Next
End Sub

そもそもご質問の解釈を間違っていたら、忘れてください。
    • good
    • 0
この回答へのお礼

詳しいコードをありがとうございます。
試してみたいと思います。

お礼日時:2022/03/30 15:03

クエリでやればいいでしょう。



let
ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
行のグループ化 = Table.Group(ソース, {"項目2"}, {"グループ", each _}),
項目3列の追加 = Table.AddColumn(行のグループ化, "項目3", each {null} & List.Distinct([グループ][項目3])),
項目3列を展開 = Table.ExpandListColumn(項目3列の追加, "項目3"),
項目4列を追加 = Table.AddColumn(項目3列を展開, "項目4", each if [項目3] = null then [項目2] else null),
他の列を削除 = Table.SelectColumns(項目4列を追加,{"項目3", "項目4"})
in
他の列を削除

テーブルの項目行の表示チェックを外す
「【Excel】指定した文字列に該当する行」の回答画像1
    • good
    • 0
この回答へのお礼

クエリを使用することは思いつきませんでした。
ご丁寧にありがとうございました。

お礼日時:2022/03/30 15:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!