
No.9ベストアンサー
- 回答日時:
No.5です。
MATCH(1,INDEX(SIGN(LEN(B1:E1)),0),0)
MATCH(検査値, 検査範囲, 照合の型)
検査範囲は INDEX関数でつくられた配列データ。
配列データの内容は LEN(B1:E1)で、B1:E1各セルの文字数( 桁数 )。
質問の例ではわかりにくいので
B1:空白、C1:1234、D1:空白、E1:56
のようにデータが入っていると思ってください。
SIGN関数を使わずに、INDEX(LEN(B1:E1),0) だとすると、
{0,4,0,2}
という配列データになります。
0、4、0、2 は LEN関数の戻り値、B1:E1のそれぞれの文字数( 桁数 )です。
SIGN関数は数値の正負を調べる関数。
引数が正の数なら( 何桁であっても )1を返します。
だから SIGN関数を使って、INDEX(SIGN(LEN(B1:E1)),0) なら
{0,4,0,2} という配列データは
{0,1,0,1}
というふうになります。
ここでは SIGN関数の引数は文字数なので、セルが空白なら 0、データが入っていれば 1。戻り値は 0 か 1 かのどちらかです。
なので、MATCH関数は↓な感じになります。
=MATCH(1,{0,1,0,1},0)
1が検査値。{0,1,0,1}が検査範囲。
何桁の数値( 文字列でも )が入っていても、検査値を 1にしておけば左端のデータ位置を求めることができるってことです。
もしかしてこの検査値の 1を見て、
>左端の値は1とは限らないのです。
と思いました? ちっ、ヴァカな回答よこしやがって! て感じでした?
このときの MATCH関数が返す位置は B列を1とするものなので、正しいセル番地を求めるために +1しています。
MATCH(1,INDEX(SIGN(LEN(B1:E1)),0),0)+1
検査範囲が C列から始まるなら +2、D列から始まるなら +3のように調整してください。
丁寧な解説ありがとうございました。
配列を検査範囲に指定するというのを知らなかったので、最初回答を見てもチンプンカンプンでした><
よくわかりました。
>もしかしてこの検査値の 1を見て、
そのとおりでした。お恥ずかしい限りです。
No.8
- 回答日時:
A-G列で左から見ていって、初めて空白でない数字文字などの現れる列番号
配列数式で考えてみました。たとえばH2セルに
=MIN(IF(A2:G2<>"",COLUMN(A2:G2),""))
と入れてSHIFT+CTRL+ENTERを(3つのキーを)同時に押す。
意味はA2:G2までで、空白セルでなければ、列番号を採る。
それらの列番号の中で最小の列番号を採ると、一番左の列を見つけたことになる。
>SHIFT+CTRL+ENTERを(3つのキーを)同時に押す。
これも知らない操作でした。
検索かけて、配列数式を調べてきました。
こんな便利な機能があったのかと、知らなくて損してた気分ですw
ありがとうございました。
No.6
- 回答日時:
>SUMPRODUCT(MIN(10^(B1:E1="")*COLUMN(B1:E1)))
10^(B1:E1="")で空白のセルなら10、空白でなければ1を返します。
COLUMN(B1:E1)で行位置がでますので上記の係数をかけた上で
MIN関数で空白でない位置の最小値を求めています。
例題の1行目ならMIN(20,3,4,5)=3、2行目ならMIN(20,30,4,5)=4
このMIN関数の中で配列の計算をしている為、このままでは正常な値を返しません。
そのためにSUMPRODUCTで配列の和を求めて行の位置を表示させています。
解説ありがとうございます。
MINに配列を入れるとか、到底思いつかない方法ですね。目からうろこです。
範囲が広くなったら10を大きくしてやると言い訳ですね。
ありがとうございました。
No.5
- 回答日時:
No.3です。
>左端の値は1とは限らないのです。
意味がわかりません。
実際に試していただいた上でのご発言でしょうか?
大変失礼いたしました。
こちらの確認不足と勘違いでした。
No.3のご回答でこちらの期待通りの動作をいたしました。
不愉快な思いをさせてしまい、申し訳ありませんでした。
よろしければ内容の説明をお願いできないでしょうか。
特に、
SIGN(LEN(B1:F1))
がさっぱりです><
No.3
- 回答日時:
No.1です。
>セルの位置を取得
値じゃなく、アドレスですか?
これかな? p(..)
A1:
=ADDRESS(ROW(),MATCH(1,INDEX(SIGN(LEN(B1:E1)),0),0)+1,4)
下にコピー
ちなみにNo.1の式は↓に訂正しておきます。
=INDEX(B1:E1,,MATCH(1,INDEX(SIGN(LEN(B1:E1)),0),0))
結果は同じことですけど、B1:E1のあとはカンマ2個の方がいいです。
回答ありがとうございます。参考になりました。
ただ、こちらの例が悪かったです。左端の値は1とは限らないのです。
大変申し訳ありませんでした。
No.1
- 回答日時:
こんなので p(..) どうでしょう?
A1:
=INDEX(B1:E1,MATCH(1,INDEX(SIGN(LEN(B1:E1)),0),0))
下にコピー
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
血液検査報告書の「弱乳び」
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
原爆などで負った酷いやけどの...
-
MIN関数で空白セルを無視したい...
-
2つの数値のうち、数値が小さい...
-
EXCELの条件付き書式で数式を空...
-
血液検査の結果が悪くefgrの値...
-
値が入っているときだけ計算結...
-
病院側から早く来てくださいと...
-
風俗店へ行く前のご飯
-
勃起する時って痛いんですか? ...
-
検便を取ったのですが、棒から...
-
イタリアから帰国する際、肉製...
-
リンク先のファイルを開かなく...
-
excel関数で TRUEやFALSEについて
-
小数点以下を繰り上げたものを...
-
急いでます!病院から患者様へ...
-
男性に質問 お尻の穴を見せた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
アトピー性皮膚炎
-
コロナになるのが死ぬほど怖い...
-
検便についてです。 便は取れた...
-
24歳、女性です。性欲が強すぎ...
-
未成年の従姉妹が自分の真似絵...
-
頭痛に関する質問です。現在高...
-
血液検査の結果が悪くefgrの値...
-
肝臓がんになりたいです。肝機...
-
何故 削除され続けるか、
-
◎敢えてノンジャンルカテゴリー...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
風俗店へ行く前のご飯
-
2つの数値のうち、数値が小さい...
-
病院側から早く来てくださいと...
-
EXCELで条件付き書式で空白セル...
-
Excel 数値の前の「 ' 」を一括...
-
リンク先のファイルを開かなく...
-
値が入っているときだけ計算結...
おすすめ情報