• ベストアンサー

C列から複数ある"東"の文字を検索し、セル番地を上から順番に求めたい。

  ┃  A  |  B  |  C  |  D  |  E  | ━━━━━━━━━━━━━━━━━━━━━━━━ 1 ┃     |     |  北  |     |  ※1  | ──────────────────────── 2 ┃     |     |  東  |     |  ※2  | ──────────────────────── 3 ┃     |     |  西  |     |  ※3  | ──────────────────────── 4 ┃     |     |  東  |     |  ※4  | ──────────────────────── 5 ┃     |     | おおお |     |     | ──────────────────────── 6 ┃     |     |  南  |     |     | ──────────────────────── 7 ┃     |     | あいう |     |     | ──────────────────────── 8 ┃     |     |  東  |     |     | ──────────────────────── 10┃     |     |  み  |     |     | ──────────────────────── 11┃     |     |  北  |     |     | ──────────────────────── 12┃     |     |  あ  |     |     | 上記のようにC1:C100の範囲に"東"の文字が入力されており、  ※1のE1セルには上から1番目の"東"の文字が入力されているセル番地を表示。  ※2のE2セルには上から2番目の"東"の文字が入力されているセル番地を表示。  ※3のE3セルには上から3番目の"東"の文字が入力されているセル番地を表示。  ※4のE4セルには上から4番目の"東"の文字が入力されているセル番地を表示。 といった具合にセル番地を求めたいと考えています。 ただし、マクロ、配列数式は使わない方法を探しています。 また、別のセルで一度計算した結果をE1セルの計算に使用するなど段階を追った方法も使用しないで、E1セルの一つの式で求めたいと考えています。 よろしくお願いします。

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

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.2

E1=IF(ROW(A1)>COUNTIF($C$1:$C$50,"東"),"","C"&(SMALL(INDEX(($C$1:$C$50<>"東")*100+ROW($1:$50),),ROW(A1)))) または、 E1=IF(ROW(A1)>COUNTIF($C$1:$C$50,"東"),"",ADDRESS(SMALL(INDEX(($C$1:$C$50<>"東")*100+ROW($1:$50),),ROW(A1)),3,4)) ★下にコピー

その他の回答 (1)

回答No.1

最初の位置 =match("東",データ範囲,0) これは説明不要ですね。 2番目以降は、検索範囲を変えることで発見します。すなわち、 =match("東",offset(データ範囲,E1,0,rows(データ範囲)-E1),0)+E1 のようにoffset関数で前回発見した位置だけ縮んだデータ範囲を発 生させ、最後にその分だけ数値を足してやって本来のデータ範囲に おける位置を算出するわけ。これはフィルハンドルでドラッグする だけで3番目4番目と順次直前の値を参照しながら列記できます。 1~3番目なしでいきなり4番目を見つける方法ってのは、上記の式を ひたすら入れ子にすれば出来ますが面倒くさいので書きません。

関連するQ&A