【初月無料キャンペーン中】gooドクター

画像のようなデータを元に、検索を行いたいです。「データ内容」列が検索対象です。
例えばここで「AB」いう文字列を検索対象とすると、データ番号7と8に該当する「AB」がヒットするという具合です。

excelの機能で完結するのではなく、pythonなどプログラミングを用いて検索するということも考えています。
何か参考になる情報をいただけると助かります。

「excelのデータを、セルをまたいで検索」の質問画像
gooドクター

A 回答 (5件)

ご質問者のご希望と一致しているかどうかは判りませんが、添付画像①をご覧ください。


A列、B列にご質問者のお示しになったリストがあります。検索条件で複数ヒットするようにデータを若干追加してあります。
E1に検索したい文字列を入力するとG列に合致したデータのデータ番号を返すというものです。
ご質問者のいう
>セルをまたいで検索する
という意味を「直下のセルと結合した文字列が検索条件と一致」という単純な条件と解釈しました。
No.1さんのご指摘のとおり、上記のような単純なルールなら
>簡単なロジックであるならば、エクセルの組み込み関数だけでも処理が可能
ということで数式を考えてみました。
「直下のセルと結合した文字列が検索条件と一致」ということは、例えばB3が空白の場合、B2とB3を結合した結果がB2と同じものになってしまいます。
すると、「(1)結合前に、既に条件に合致した文字列であった」のか、「(2)結合した結果、文字列が条件に合致する文字列となった」のか判りません。
また、B2が空白の場合、B2とB3を結合した結果がB3と同じものになってしまいます。この場合も上記と同様の問題が起こります。
「セルをまたいで検索する」のであれば「結合文字列は空白との結合の結果ではない」というチェックが必要になります。
さらに、これも、No.1さんのご指摘のとおり、「検索結果が複数ヒットする」ということは当然考えられるわけです。
上記の前提を考慮したうえで、仮に、データが300行程度まであったとしてG1セルに、

=IFERROR(AGGREGATE(15,6,INDEX($A$2:$A$301,0)/(($B$2:$B$301&$B$3:$B$302)=$E$1)/($B$2:$B$301&$B$3:$B$302<>$B$2:$B$301)/($B$2:$B$301&$B$3:$B$302<>$B$3:$B$302),ROW(A1)),"")

という数式を記述し下方向へコピーすれば検索結果として「データ番号」が表示されます。
「直下のセルと結合した文字列が検索条件と一致」という単純な条件なので、表示されるのは「直下のセルと結合するセルのデータ番号」
つまり上部に位置するセルのデータ番号になります。
添付画像➁は検索値を「CB」に変えたものです。B2に「結合前」の「CB」がありますが、これはヒットと見做さず、データ番号12のみヒットと認めるような数式になっています。
「excelのデータを、セルをまたいで検索」の回答画像5
    • good
    • 0
この回答へのお礼

みなさまご回答いただきありがとうございます。
また、私の足りない言葉を丁寧に読み取っていただき恐縮です…。

goomaniaさんにご提案いただきましたとおり、「直下のセルと結合した文字列が検索条件と一致」というものを作りたかったのです。解決例も一つ挙げていただきとても参考になりました。
ご回答いただきましたものを参照して、もう一度自身で精査してみます。本当にありがとうございました。

お礼日時:2021/10/18 15:35

おはようございます。



仕様がハッキリしたらそれほど難しくはないと思います。

1)「データ内容」は 必ず1文字か。
2)「データ内容」が複数文字の場合
  B8 = "AB"
  B9 = "CD"
  のとき
  "ABCD" で検索すれば当然ヒットする。
  "BC" 、"ABC" はヒットするか?(他にヒットするものが無い場合)
3)ヒットしたかどうか分かればよいか、
  それとも 対応する「データ番号」を返すのか。

以上、曖昧なままでは オーバースペックになったりするので。
無駄なことは嫌いです。
    • good
    • 0
この回答へのお礼

bonaronさんの仰るとおり、仕様がまだあまり明確ではありませんでした。やりたいことをもっと突き詰めて考えてみて、形にするようにしてみます。

お礼日時:2021/10/18 15:35

プログラム使うなら、VBAが通常だと思うのですが。


VBAは苦手だから、若しくはpythonが得意だから、なら
VBA以外も有りですが。
    • good
    • 0
この回答へのお礼

プログラムはpythonしかできない、というのが現状です…。VBAというものの方がやりやすいのでしょうか、勉強してみます。

お礼日時:2021/10/18 15:36

こんにちは。



やりたい事がプログラムでしたら、下記は不要かもしれませんが。
やりたいことと違う様でしたら、スルーして下さい。

関数と、検索(Ctrl + F)でも、一応は可能かと。

C3セルに、 = B2 & B3
C3セルをコピーして、C2~C11で貼り付け
C列を検索(Ctrl + F)で、検索対象を値にして、文字:ABで検索すると
データ番号8の行が検索できるかと。
    • good
    • 0
この回答へのお礼

できれば人力ではなくプログラムで処理したく思っておりました。
ですが、ご回答いただきありがとうございます!

お礼日時:2021/10/18 15:37

こんにちは



「検索」とおっしゃっているもののロジックがよくわかりませんけれど、それは質問者様にはわかっているのでしょうから・・・
(データ「9,10」、「8,10」‥などの組み合わせのなかから、なぜ「7,8」だけがヒットするのか不明)

>pythonなどプログラミングを用いて検索するということも考えています。
とのことなので、そのロジックを記述できさえすれば可能と考えられます。
外部からの処理にする必要がなければ、エクセル内のマクロだけでも完結できるでしょう。
もしも簡単なロジックであるならば、エクセルの組み込み関数だけでも処理が可能かもしれません。


>何か参考になる情報をいただけると助かります。
ロジックに関しては内容が不明なので、質問者様以外にはわからない内容です。

pythonでエクセルを操作する方法なら、検索すればいろいろヒットすると思います。
以下一例です。
https://www.sejuku.net/blog/75536
https://techacademy.jp/magazine/23344
    • good
    • 0
この回答へのお礼

言葉が足らず失礼いたしました。参考情報のご提示をありがとうございます、熟読して参考と致します。

お礼日時:2021/10/18 15:37

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

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング