• ベストアンサー

EXCEL関数 数値セルが何個下に出てくるか?

EXCEL関数で質問です。 A1:A5セルそれぞれに、文字列、空白、数値のいずれかが入っています。 そのうち数値のセルが最初に出てくるのは上から何番目か、というのを B1セルに関数で表示したいのです。 たとえば、A列上から、 あ、A、100、100、0 なら3、 愛、(空白)、百、8、ZZZ なら4 という具合です。 お知恵をお貸しください!

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

  • ベストアンサー
回答No.2

配列数式は編集するたびに面倒くさいので嫌い。だから、 =match(TRUE,index(isnumber(A1:A5),0),0) isnumber関数って本来は範囲や配列を引数に持ったりしないので、し かたなく「配列数式として入力」なんてするんだけど、実はこうやっ てindex関数で包んでやるときれいな配列になる。そうするとmatch関 数での検索対象に使えるので、最初にisnumberが真になった場所を見 つければいい。 ちなみにrow関数を使うとmatchみたいな「対象範囲の上から何番目」 じゃなくて行番号がでてくるので、応用するときは要注意。

dfskr45546
質問者

お礼

凄いです。IS関数にそんな使い方が‥! MATCH関数とINDEX関数は私は苦手なので、よーく紐解いてみます。 大変助かりました。ありがとうございました。

その他の回答 (3)

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

関数では苦手の部類の問題です。普通なら値指定して出現する位置求めは、MATCH関数ですが、セルの値を聞いているのでなく、データ性格を聞くことになるので難しい。 既に出ているように、関数では、相当経験して無いと、いずれも思いつかないような回答になるので、 VBAが少し判る人には、ユーザー関数を作る手もあります。 ロジックは上から1つつ、探すだけ。 標準モジュールに Function numf(a) Application.Volatile i = 1 For Each cl In a If IsNumeric(cl) And cl <> "" And VarType(cl) <> 8 Then numf = i Exit Function Else i = i + 1 End If Next End Function シートで普通の関数と同じく =numf(A4:A9) <-下記例の場合 例データ A6:A9 as kann 神田    <-空白  123 <-’123 123 <-普通の数値 ーー 結果 6

dfskr45546
質問者

お礼

>関数では苦手の部類の問題です やはりそうですか。私もどうしても解が思いつきませんでした。 ご回答ありがとうございました。

noname#204879
noname#204879
回答No.3

{=MATCH(TRUE,ISNUMBER(A1:A5),0)} (配列数式)

dfskr45546
質問者

お礼

配列数式は知りませんでした。勉強します。 回答ありがとうございました。

回答No.1

=MIN(IF(ISNUMBER(A1:A5),ROW(A1:A5))) 配列数式のため、[Enter]ではなく、 [Ctrl]+[Shift]+[Enter]で確定してください。

dfskr45546
質問者

お礼

配列数式というのは初めて知りました。 回答ありがとうございました!