• ベストアンサー

Excelでの検索についての質問です

Excelの検索方法についての質問です 例として 1列目に手順の数 1 2 3 1 2 3 4 1 2 3 4・・・ 2列目に作業方法 a b c a b c d a b e d・・・ と数字と作業方法が並んでいます 例えば、 1 2 3 4 a b e d という8個のセルと一致する箇所を検索したいのですが なにかいい検索方法はありますでしょうか お手数ですが、教えていただけたらうれしいです

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

#2です。 配列数式ならA7のところに、 {SUM(IF(A1:D2=$A$4:$D$5,0,1))} だそうです。 ※両側の{}は、Ctrl+Shift+Enterで式の入力を確定すると自動でつきます これを普通にEnterで確定すると#valueなどのエラーになります。念のため。 この値が0になるところが、該当する先頭列になります。 =MATCH(0,A7:K7,0) で見つけられます。目で見て探すなら、条件付書式を設定しておくといった方法も考えられます。

参考URL:
http://office.microsoft.com/ja-jp/excel/HA102284581041.aspx
o-roron
質問者

お礼

夜中から気にかけていただいたようで恐縮です 教えていただいたMATCH関数と条件付書式でやり繰りして 作業を進めています 作業効率が劇的に上がりました ありがとうございます

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

エクセルの関数は、セルの組み合わせ・集団(この場合4セル)について、一遍に比較するものが無いようなので、結構難しいと思う。 関数でやると、条件を満たした、最初の出現位置しか出せないような予想をする。普通は関数は答えは1つしか返らないから。 ーー それで、とりあえず、VBAでやってみます。 例データ A列   B列 1 a 2 b 3 c 1 a 2 b 3 c 4 d 1 a 2 b 3 e 4 d ーーー コード 標準モジュールに Sub test01() d = Range("A65536").End(xlUp).Row x = "1234" y = "abed" '-- For i = 1 To d - 3 c = Range("A" & i) & Range("A" & (i + 1)) & Range("A" & (i + 2)) & Range("A" & (i + 3)) If c = x Then c = Range("B" & i) & Range("B" & (i + 1)) & Range("B" & (i + 2)) & Range("B" & (i + 3)) If c = y Then MsgBox i End If End If Next i End Sub 結果 8  (8行目以下11行目までが、一致部分。) 該当が2箇所あれば、OKの応答後に、続けて表示される。 ーーー 1234とabedの内容、すなわち 上記x、yの内容をその都度変える場合は x = InputBox("X=") y = InputBox("Y=") で置き換え、利用者に入力させるると良い。 ーー 文字列の結合にVBAでは、Concatenate関数が使えないので、セル数がA1:A4の部分が増えると式が長くなるので、別コードにする手がある(記述略)。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

入浴中に思いついて、夜更かししてしまいました。 ......A....B....C....D....E....F....G....H....I....J....K ..1.....1....2....3.....1....2....3....4.....1....2....3....4 ..2....a....b....c....a....b....c....d....a....b....e....d ..4.....1....2....3....4.......................................... ..5....a....b....c....d.......................................... ..7....0....0....0.....1....0....0....0....0....0....0....0 A7の式:=(A1=$A$4)*(A2=$A$5)*(B1=$B$4)*(B2=$B$5)*(C1=$C$4)*(C2=$C$5)*(D1=$D$4)*(D2=$D$5) 右にズズッとコピー。ヒットするブロックの先頭が1になる。 =MATCH(1,A7:K7,0) などとすれば、先頭列番号が求められる。 配列数式の達人ならもっとすっきりとまとめられる?かもしれませんが、ご参考まで。

  • kata_san
  • ベストアンサー率33% (423/1261)
回答No.1

えーっと、 ↓こちらなどは参考になると思いますけど? エクセル技道場 http://www2.odn.ne.jp/excel/ まだまだ、あるとはおもいますが・・・。 とりあえず。