
初めまして。二つのカンマ区切りデータの片方の要素が、もう一方のデータに含まれているかを
関数で確認する方法に悩んでいます。
簡単な方法がありましたらご教示お願いします。
分解して足し算の和を比較する方法も考えましたがたまたま一致してしまう恐れがあるので
一つづつ比較したいと思っています。
セル内のデータ数についてはカンマ有り、無しの文字数比較で解決できるので
純粋にセルAの各要素がセルBの全て含まれているか確認したいと思っています。
また1セルで解決したいと思っています。
例)
【セルA】10,20,30,40,50
↓
↓セルAの10~50(カンマ区切り)の全ての要素がセルB(カンマ区切り)に含まれているかを検査
↓
【セルB】30,50,10,40,20
【セルC】検査結果を表示
よろしくおねがいします。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
>【セルA】10,20,30,40,50
> ↓
> ↓セルAの10~50(カンマ区切り)の全ての要素がセルB(カンマ区切り)に含まれているかを検査
> ↓
>【セルB】30,50,10,40,20
仮に【セルB】30,50,10,40,20,6 としてもOK(TRUE)で良いのですか?
それとも完全一致なのですか?
MATCH関数を使って、AはBにすべて含まれると考え
=COUNT(MATCH(MID(A1,FIND("☆",SUBSTITUTE(","&A1,",","☆",ROW(A$1:INDEX(A:A,1+LEN(A1)-LEN(SUBSTITUTE(A1,",","")))))),
FIND("☆",SUBSTITUTE(A1&",",",","☆",ROW(A$1:INDEX(A:A,1+LEN(A1)-LEN(SUBSTITUTE(A1,",",""))))))
-FIND("☆",SUBSTITUTE(","&A1,",","☆",ROW(A$1:INDEX(A:A,1+LEN(A1)-LEN(SUBSTITUTE(A1,",","")))))))*1,
MID(A2,FIND("☆",SUBSTITUTE(","&A2,",","☆",ROW(A$1:INDEX(A:A,1+LEN(A2)-LEN(SUBSTITUTE(A2,",","")))))),
FIND("☆",SUBSTITUTE(A2&",",",","☆",ROW(A$1:INDEX(A:A,1+LEN(A2)-LEN(SUBSTITUTE(A2,",",""))))))
-FIND("☆",SUBSTITUTE(","&A2,",","☆",ROW(A$1:INDEX(A:A,1+LEN(A2)-LEN(SUBSTITUTE(A2,",","")))))))*1,0))
=LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1
[Ctrl]+[Shift]+[Enter]配列数式、{}で囲まれる。
完全一致ならもう少し簡単?で、小さい順にして
=AND(SMALL(MID(A1,FIND("☆",SUBSTITUTE(","&A1,",","☆",ROW(A$1:INDEX(A:A,1+LEN(A1)-LEN(SUBSTITUTE(A1,",","")))))),
FIND("☆",SUBSTITUTE(A1&",",",","☆",ROW(A$1:INDEX(A:A,1+LEN(A1)-LEN(SUBSTITUTE(A1,",",""))))))
-FIND("☆",SUBSTITUTE(","&A1,",","☆",ROW(A$1:INDEX(A:A,1+LEN(A1)-LEN(SUBSTITUTE(A1,",","")))))))*1,ROW(A$1:INDEX(A:A,1+LEN(A1)-LEN(SUBSTITUTE(A1,",","")))))
=SMALL(MID(A2,FIND("☆",SUBSTITUTE(","&A2,",","☆",ROW(A$1:INDEX(A:A,1+LEN(A2)-LEN(SUBSTITUTE(A2,",","")))))),
FIND("☆",SUBSTITUTE(A2&",",",","☆",ROW(A$1:INDEX(A:A,1+LEN(A2)-LEN(SUBSTITUTE(A2,",",""))))))
-FIND("☆",SUBSTITUTE(","&A2,",","☆",ROW(A$1:INDEX(A:A,1+LEN(A2)-LEN(SUBSTITUTE(A2,",","")))))))*1,ROW(A$1:INDEX(A:A,1+LEN(A2)-LEN(SUBSTITUTE(A2,",",""))))))
[Ctrl]+[Shift]+[Enter]配列数式、{}で囲まれる。
おそらく2003以前ではネストレベル超えていると思われ。
桁数固定とか、カンマの数が固定とか何かしら制限があれば短くなるんだが、、、。
根本的に1つのセルですべて処理するのが間違いか。
ふ~ 疲れた
No.5
- 回答日時:
> また1セルで解決したいと思っています。
そこにこだわる意味はあるんですか?
回答した後で「分からないから解説してくれ」とか「実はバージョンが古くて動かない」
とか そういう後出しの話には対応できかねます。
=SUBSTITUTE(NPV(9,FREQUENCY(FILTERXML("<a><b>"&SUBSTITUTE(A2,",","</b><b>")&"</b></a>","//b"),FILTERXML("<a><b>"&SUBSTITUTE(A1,",","</b><b>")&"</b></a>","//b"))),1,"")="0."
No.4
- 回答日時:
EXCELの関数では難しいかと思います。
やはりマクロ(ユーザ関数)を作成した方がすっきりと解決すると思います。
以下のマクロを設定し、関数を使用してみてください。
【セルC】=包含チェック(【セルA】,【セルB】)
注)カンマ区切りの内容は、全て数字として判断してチェックしています。
--------- 以下マクロコード -----
Function 包含チェック(チェックセル As String, 全値セル As String) As Boolean
Dim I As Long
Dim J As Long
Dim チェック分割 As Variant
Dim 全値分割 As Variant
チェック分割 = Split(チェックセル, ",")
全値分割 = Split(全値セル, ",")
For I = 0 To UBound(チェック分割)
包含チェック = False
For J = 0 To UBound(全値分割)
If Val(チェック分割(I)) = Val(全値分割(J)) Then
包含チェック = True
Exit For
End If
Next J
If 包含チェック = False Then Exit Function
Next I
End Function
No.3
- 回答日時:
文章からCSVデータの比較かと思ったよ。
Comma Separated Value
4.0マクロの数式案(結局のところマクロですが)
A1セルに「10,20,30,40,50」と入力してある
A2セルに「30,50,10,40,20」と入力してある
としてA3セルを選択して[Ctrl]+[F3]名前の定義
名前 比較
参照範囲
=AND(EVALUATE(SUBSTITUTE(A1,",","+"))
=EVALUATE(SUBSTITUTE(A2,",","+")),
EVALUATE(SUBSTITUTE(A1,",","*"))
=EVALUATE(SUBSTITUTE(A2,",","*")))
A3セルに =比較
つまり、足し算だけでなく掛け算も比較
(数学で勉強した気もするけど。。。)

No.2
- 回答日時:
No.1です。
どこかでカンマ区切りで生成された2つのデータを2つのセルに入れるしかできないという事でしたら。。。
セルBの文字列の先頭から最後までカンマ区切りで文字列データ(質問だと各2文字)を1つずつ抽出し、抽出した1つの文字列データがセルCに無いか文字列比較する、、、ということでしょう。
セルBまたはセルCに値が入った際に実行されるのか、シート状に実行ボタンを設けるのか全体仕様が分からないので何とも言えませんが、マクロで実現するのが汎用性があるように思います。
参考まで。
ありがとうございます。
検査のタイミングはセルに値が入ったときになります。
マクロを書くなどするのであれば配列、ループで検
査が可能だと思いますが、関数だけとなるとなかなか苦戦してしまいまして困ってる所です…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/03/09 14:24
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) エクセル、セルの分割について 回答お願いいたします。 画像のように一つのセルを2つに分割する方法をご 3 2022/06/20 10:35
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/04/21 08:59
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/04/21 13:46
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Excel(エクセル) 名前と日付が一致する箇所にフラグを立てる関数が知りたいです 4 2022/08/11 02:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について
-
エクセル GROUPBY関数について...
-
Excelで4択問題を作成したい
-
エクセルの複雑なシフト表から...
-
エクセル
-
Amazonでマイクロソフトオフィ...
-
エクセルシートの見出しの文字...
-
グループごとの個数をカウント...
-
【マクロ】変数に入れるコード...
-
エクセルのリストについて
-
【マクロ】別ファイルへマクロ...
-
グループごとの人数のカウント
-
エクセルについて
-
グループごとの人数のカウント
-
【マクロ】左のブックと右のブ...
-
【マクロ】元データと同じお客...
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報