初めまして。二つのカンマ区切りデータの片方の要素が、もう一方のデータに含まれているかを
関数で確認する方法に悩んでいます。
簡単な方法がありましたらご教示お願いします。
分解して足し算の和を比較する方法も考えましたがたまたま一致してしまう恐れがあるので
一つづつ比較したいと思っています。
セル内のデータ数についてはカンマ有り、無しの文字数比較で解決できるので
純粋にセル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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
タイムスタンプとテキストから...
-
エクセルの文字が途中から消える
-
エクセルの質問です。 F列からL...
-
ワークシートに出現したこの画...
-
Excelの警告について
-
EXCELの散布図で日付が1900年に...
-
エクセルでファイルの最終更新...
-
Excelでの文字色
-
マクロの処理が遅くなった
-
シートの情報を別のシートへま...
-
OFFSET関数を使用したいのです...
-
エクセルの数式バーのフォント...
-
エクセルデーターから必要な項...
-
Excelについて教えてください。...
-
SUBTOTALは、参照された数字で...
-
エクセルの「条件付き書式」を...
-
Excelの関数について このよう...
-
エクセル。金額から「円」を除...
-
Excelの数字の前に入っている空...
-
エクセルの問題です。絶対値の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
Excelで数値を時間数に変換する...
-
エクセルの数式バーのフォント...
-
エクセルで数字の組み合わせを...
-
エクセルを使用して、円周率を...
-
Excelで特定の文字列が含まれて...
-
Excel 対象のセルに入力が無い...
-
任意の値が存在する行に名前を...
-
エクセルでファイルの最終更新...
-
index関数の説明をお願いします。
-
条件付き書式でやりたいのですが
-
重複しない値を取り出したい
-
【ExcelVBA】UTF-8(BOM無)でC...
-
【マクロ】マクロが割当てされ...
-
エクセル IF計算式?でしょうか?
-
エクセルで曜日を入れたい
-
表中の指定した条件の文字列を...
-
【Excel】版が同じ事を示す番号...
-
EXCELの散布図で日付が1900年に...
-
Excelについて。Excelに縦1列に...
おすすめ情報