- ベストアンサー
範囲内の最左に入力された数値を取得する方法
エクセルにおいて、関数で □□□□22222233333□□□□□ などと数値が入力されている場合、一番左の数値を抜き出すにはどのようにしたらいいのでしょうか? 一番右の数値を抜き出すやり方はわかったんですが、左の場合がわからなくて困ってます。。。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
お手軽に =INDEX(A1:Z1,MIN(IF(ISNUMBER(A1:Z1),COLUMN(A1:Z1)))) と記入して,コントロールキーとシフトキーを押しながらEnteで入力してみるなどで。
その他の回答 (8)
- okormazd
- ベストアンサー率50% (1224/2412)
#3です。 まあ、ということであれば、同様な式、 =INDEX(A1:Z1,ROW(A1),MATCH(1,ISNUMBER(A1:Z1)*1,A1:Z1)) で、どうでしょう。 これも、配列数式です。
お礼
回答ありがとうございます。 できました! これで、仕事が順調に進みそうです。 ありがとうございました。もっと勉強します!
- mu2011
- ベストアンサー率38% (1910/4994)
NO6です。 A1:Z1範囲としています。 =INDEX(A1:Z1,,MIN(INDEX(IF(ISNUMBER(A1:Z1),COLUMN(A1:Z1),1000),))) 配列数式につき、入力完了時にShift+Ctrl+Enterキーを同時押下して下さい。
お礼
回答ありがとうございます。 教えていただいたやり方を試したところできました! 追加の質問内容も間違っていたことに気づきました笑 ありがとうございました。
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 数字は半角、全角を意識せずに抽出しますが、半角のみならば数式内のASC(A1)部分を A1にして下さい。 =MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},ASC(A1)&"1234567890")),1)
お礼
回答ありがとうございます。 すみません、質問に不備がありました。。。 □は空白セルです。 なので、 A1 A2 A3 A4 A5 A6 A7 A8 □ □ □ 2 2 2 3 □ などと入力されている場合、空白セルを無視して、一番左の数字である2 を取得したいです。1つのセルに入力されているのは単一の数値になります。 質問の仕方が悪く、申し訳ありません。 一番右に入力されている数値の取得は http://www.nurs.or.jp/~ppoy/access/excel/xlET031.html を参考にしました。
- keithin
- ベストアンサー率66% (5278/7941)
=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),1)*1 でいいです。
- FEX2053
- ベストアンサー率37% (7991/21371)
あの、複雑に考えなくても中身が数字だけなら =LEFT(TEXT(VALUE(A1),"######"),1) で、いいんじゃ? "#####"は十分な桁数があれば、自動的に左側は 無視されるのでオッケーだし。
お礼
回答ありがとうございます。 すみません、質問に不備がありました。。。 □は空白セルです。 なので、 A1 A2 A3 A4 A5 A6 A7 A8 □ □ □ 2 2 2 3 □ などと入力されている場合、空白セルを無視して、一番左の数字である2 を取得したいです。1つのセルに入力されているのは単一の数値になります。 質問の仕方が悪く、申し訳ありません。 一番右に入力されている数値の取得は http://www.nurs.or.jp/~ppoy/access/excel/xlET031.html を参考にしました。
- okormazd
- ベストアンサー率50% (1224/2412)
次の数式でどうでしょう。 ただし、配列数式なので、数式入力後、Ctrl+Shift+Enterとしてください。{ }がつく。 なお、20字までの文字列に対応していますが、ROW($A$1:$A$20)の部分の$20の20を変えれば、多くの文字列にも対応できるでしょう。 {=MID(A1,MATCH(TRUE,ISNUMBER(MID(A1,ROW($A$1:$A$20),1)*1),0),1)*1}
お礼
回答ありがとうございます。 すみません、質問に不備がありました。。。 □は空白セルです。 なので、 A1 A2 A3 A4 A5 A6 A7 A8 □ □ □ 2 2 2 3 □ などと入力されている場合、空白セルを無視して、一番左の数字である2 を取得したいです。1つのセルに入力されているのは単一の数値になります。 質問の仕方が悪く、申し訳ありません。 一番右に入力されている数値の取得は http://www.nurs.or.jp/~ppoy/access/excel/xlET031.html を参考にしました。
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! VBAでの一例になります。 データはA1セルからありB列に表示するとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, k As Long Dim str As String For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row For k = 1 To Len(Cells(i, 1)) str = Mid(Cells(i, 1), k, 1) If IsNumeric(StrConv(str, vbNarrow)) Then Cells(i, 2) = str Exit For End If Next k Next i End Sub 'この行まで ※ 関数ではないので、ご希望の方法でなかったらごめんなさいね。m(_ _)m
お礼
回答ありがとうございます。 すみません、質問に不備がありました。。。 □は空白セルです。 なので、 A1 A2 A3 A4 A5 A6 A7 A8 □ □ □ 2 2 2 3 □ などと入力されている場合、空白セルを無視して、一番左の数字である2 を取得したいです。1つのセルに入力されているのは単一の数値になります。 質問の仕方が悪く、申し訳ありません。 一番右に入力されている数値の取得は http://www.nurs.or.jp/~ppoy/access/excel/xlET031.html を参考にしました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
多少力技になりますがA1セルにデータがあるとして次の式を入力します。 =MID(ASC(A1),MIN(IF(COUNTIF(A1,"*1*"),FIND(1,ASC(A1)),100),IF(COUNTIF(A1,"*2*"),FIND(2,ASC(A1)),100),IF(COUNTIF(A1,"*3*"),FIND(3,ASC(A1)),100),IF(COUNTIF(A1,"*4*"),FIND(4,ASC(A1)),100),IF(COUNTIF(A1,"*5*"),FIND(5,ASC(A1)),100),IF(COUNTIF(A1,"*6*"),FIND(6,ASC(A1)),100),IF(COUNTIF(A1,"*7*"),FIND(7,ASC(A1)),100),IF(COUNTIF(A1,"*8*"),FIND(8,ASC(A1)),100),IF(COUNTIF(A1,"*9*"),FIND(9,ASC(A1)),100),IF(COUNTIF(A1,"*0*"),FIND(0,ASC(A1)),100)),1)
お礼
回答ありがとうございます。 すみません、質問に不備がありました。。。 □は空白セルです。 なので、 A1 A2 A3 A4 A5 A6 A7 A8 □ □ □ 2 2 2 3 □ などと入力されている場合、空白セルを無視して、一番左の数字である2 を取得したいです。1つのセルに入力されているのは単一の数値になります。 質問の仕方が悪く、申し訳ありません。 一番右に入力されている数値の取得は http://www.nurs.or.jp/~ppoy/access/excel/xlET031.html を参考にしました。
お礼
回答ありがとうございます。 できました! 少し、配列数式を理解するのに苦しみましたが、こんなやり方があるんですね。 配列数式について勉強してみたいと思います。