- ベストアンサー
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セルの一つの式で求めたいと考えています。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
最初の位置 =match("東",データ範囲,0) これは説明不要ですね。 2番目以降は、検索範囲を変えることで発見します。すなわち、 =match("東",offset(データ範囲,E1,0,rows(データ範囲)-E1),0)+E1 のようにoffset関数で前回発見した位置だけ縮んだデータ範囲を発 生させ、最後にその分だけ数値を足してやって本来のデータ範囲に おける位置を算出するわけ。これはフィルハンドルでドラッグする だけで3番目4番目と順次直前の値を参照しながら列記できます。 1~3番目なしでいきなり4番目を見つける方法ってのは、上記の式を ひたすら入れ子にすれば出来ますが面倒くさいので書きません。