![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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も見ています
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。特にものすごく怒られたときとか、とんでもない損害を与えてしまったときとか…。
-
エクセルで空白を無視して一番左にあるセルを参照したい
Excel(エクセル)
-
値が入っている一番右のセル位置を返す方法
Excel(エクセル)
-
エクセルで空白を無視して一番左にあるセル内容(文字列)を別セルに返したい
Excel(エクセル)
-
-
4
範囲内の最左に入力された数値を取得する方法
その他(Microsoft Office)
-
5
値の入っているセルのうち、一番右側の値を取得したい(エクセル)
Excel(エクセル)
-
6
EXCEL 関数 選択範囲一番右のセル番地確認方法
Excel(エクセル)
-
7
エクセルで求めたセルの左隣りのセルの値を返したいです
Excel(エクセル)
-
8
Excelで一番右の列に入力された最新データを拾うようにしたいのですが…
Excel(エクセル)
-
9
Excelで重複データの件数ではなく、何番目かを求める方法
Excel(エクセル)
-
10
【EXCEL】空白でないセルの位置を検索したい
Excel(エクセル)
-
11
入力したところまでを自動的に平均を出す
Excel(エクセル)
-
12
選択行内で0%を除く一番右端の数値を取得したい
Excel(エクセル)
-
13
Excel 空白を含む列範囲からn番目のセル
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
勃起する時って痛いんですか? ...
-
これって喉仏ですか? 私は女性...
-
甲状腺が腫れているが血液検査...
-
検便についてです。 便は取れた...
-
精子が黄色?
-
旦那のピンサロ好きについてで...
-
イタリアから帰国する際、肉製...
-
エクセル指定した範囲からラン...
-
検便を取ったのですが、棒から...
-
EXCELで条件付き書式で空白セル...
-
高校3年でピンサロに行くことは...
-
リンク先のファイルを開かなく...
-
2つの数値のうち、数値が小さい...
-
エクセルのラベルの値(文字列...
-
精子に血が・・・
-
精液の落とし方を教えてください
-
知能テストは、今。 義務教育課...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
精子が黄色?
-
エクセル指定した範囲からラン...
-
小数点以下を繰り上げたものを...
-
EXCELで条件付き書式で空白セル...
-
ある範囲のセルから任意の値を...
-
甲状腺が腫れているが血液検査...
-
これって喉仏ですか? 私は女性...
-
2つの数値のうち、数値が小さい...
-
精液の落とし方を教えてください
-
精子に血が・・・
-
EXCELで式からグラフを描くには?
-
アクエリアスが苦く感じる
-
Excelで""で囲む方法
-
値が入っているときだけ計算結...
-
風俗店へ行く前のご飯
おすすめ情報