- ベストアンサー
Excel2000での数値の抽出について教えて下さい。
どうかご教示下さい。(過去質問を眺めましたが、不慣れな為よくわかりませんでした) Excel2000で桁数の不揃いな数値が入力されています。(1桁-10桁) それを別のセルに分解して抽出したいです。 たとえば、 A1セルに"12345"と入力されている数値に対して、 A2には万の位の"1"を、A3には千の位の"2"を、A4には百の位の"3"をと言った具合です。 桁数が不揃いの為、MID関数がうまく出来ませんでした。 小生まだまだ初心者です。以上よろしくお願いします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
おじゃまします。 =MID(RIGHT(REPT(" ",10)&TEXT(A$1,"0"),10),ROW()-1,1) これではいかが? 頑張ってくださいヽ(^。^)ノ
その他の回答 (7)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 突っ込みだけの回答で申し訳ないですが。 No.6の方へ。 =IF(MID(TEXT(A$1,"0000000000"),ROW(A1),1)="0","",MID(TEXT(A$1,"0000000000"),ROW(A1),1)) これだと、「13005」などの真ん中の「0」も空白になりますよ。 空白にするには、No.4の方の回答が一番いいと思います。 それを、ほんのちょっとだけ変えると、 =IF(A$1="","",TRIM(MID(TEXT(A$1,REPT("?",10)),ROW()-1,1))) たいした変更ではないですけどね。
お礼
ありがとうございます。 何度かお世話になっているのをお名前で覚えております。 早速実行してみます。
- sacoman
- ベストアンサー率56% (33/58)
#2さんへの補足を見ました。 10桁固定でよかったんですね。 ということであれば、A2に以下の式を入力して、A11までコピーすればOKですよ IF関数を使って、指定桁が0の場合は""(ブランク)になるようにしています。 =IF(MID(TEXT(A$1,"0000000000"),ROW(A1),1)="0","",MID(TEXT(A$1,"0000000000"),ROW(A1),1)) もし、ブランクではなく0でよければ、 =MID(TEXT(A$1,"0000000000"),ROW(A1),1) だけでOKです。
お礼
ご回答感謝です。 早速トライします!ありがとうございました。
補足
やってみました。でも.. 値があるのに"0"の場合もブランクになってしまいます。 例えば"100"が入力されていると、 A2からA8はブランクでA9は"1"-これはOK でも、A10,A11もブランクになってしまいました。 ここは"0"と表示したいのですが、やり方が悪いのですか??
- mitochan1975
- ベストアンサー率35% (56/159)
ちょっと自信なしです(これより簡単な方法があるかもしれません)が・・・・ 質問の例では、 A2セル =ROUNDDOWN(A1/10000,0) A3セル =ROUNDDOWN((A1-A2*10000)/1000,0) A4セル =ROUNDDOWN((A1-A2*10000-A3*1000)/100,0) ・・・・ という、12345=1*10000+2*1000+3*100+4*10+5*1の発想ですが、いかがでしょうか。 ただし、A1セルが"1234"だった場合はA2セルが"0"になります。
お礼
ご回答感謝致します。 早速試させていただきます。
- mshr1962
- ベストアンサー率39% (7417/18945)
数値5桁でA2から始めていい場合は =IF(OR(A$1="",LEN(A$1)<ROW()-1),"",MID(A$1,ROW()-1,1)) 数値5桁で開始がA7でA11で終わる場合 =IF(A$1="","",TRIM(MID(TEXT(A$1,"??????????"),ROW()-1,1)))
お礼
ありがとうございました。 感謝いたします。
- sacoman
- ベストアンサー率56% (33/58)
=IF(LEN(A$1)-ROW(A1)<1,"",MID(A$1,ROW(A1),1)) の式をA2に入力A2を下方向へコピーでどうでしょうか? メインの処理はMID(A$1,ROW(A1),1)です。 IFの処理では、 LEN(A$1)はA1の値の桁数を返します。 ROW(A1)はA1の行数(つまり1)を返します。 要するにIF関数で桁数-行数が1未満の場合は空白に する処理を入れているわけです。
お礼
ありがとうございます。 ご丁寧な解説も感謝致します。
- haruka1234567890
- ベストアンサー率18% (120/666)
5桁だと、A2が万の位ですよね。 4桁だと、A2が千の位ですよね。 であれば、 A2に =MID(A$1,ROW()-1,1) と入力し、 A11までコピーすればOKです。 もし、B列以降もあるなら、 その列までコピーしてください。 もしかして、 1-10桁だから、 A11が一の位、A2が10億の位 ってことはないですよね?
お礼
ご回答ありがとうございます。 説明不足で申し訳ありませんでした。 以下の補足をご確認下さい。
補足
言葉が足りなくて申し訳ありません。 実際には、 A2には10億の位(値が無ければブランク) A3には1億の位(値が無ければブランク) ・ ・ A10には10の位(値が無ければブランク) A11には1の位(値が無ければブランク) といった具合です。よろしくお願いします。
まず後ろから抽出していきます =right(対象セル,1) 次 =IF(ISERROR(MID(対象セル,LEN(対象セル)-2,1))=TRUE,"",MID(対象セル,LEN(対象セル)-2,1)) 次 =IF(ISERROR(MID(対象セル,LEN(対象セル)-3,1))=TRUE,"",MID(対象セル,LEN(対象セル)-3,1)) 最初の「次」から繰り返し
お礼
ありがとうございます。 早速試します。
お礼
ありがとうございます。 頑張ります!