• ベストアンサー

Excel数字分解

B1の数字を分解して右揃えでA:Gにいれたい。 B1に31,500があります。B1の数字は最高8桁になります。 しかしながら、A:Gまでにしか分解しませんので B1:12,000,333なら下記の様にA3に12をいれたい。     A  B  C  D  E  F  G   2        3   1   5   0  0    B1が12,000,333なら 3 12  0  0   0  3  3  3 MID関数でいろいろ試しましたがうまくいきません。 何かよい方法はありませんか?

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.8

  一案。。   A2の式 =LEFT(RIGHT(REPT(" ",8)&$B$1,8),2) B2~G2の式 =MID(RIGHT(REPT(" ",8)&$B$1,8),COLUMN()+1,1) 以上です。

その他の回答 (7)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.7

解答No3です。 A2セルへは次の式を入力して横方向にドラッグします。 =IF(LEN($B1)-COLUMN(A1)+1>7,LEFT($B1,LEN($B1)-6),IF(COLUMN(A1)>=8-LEN($B1),MID($B1,COLUMN(A1)+LEN($B1)-7,1),""))

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.6

A列    =LEFT(RIGHT(" "&$B$1,9-COLUMN()),2) B~G列 =LEFT(RIGHT(" "&$B$1,8-COLUMN()),1)

  • 135ok
  • ベストアンサー率34% (26/75)
回答No.5

金種表の考えで解決できるのでは。 下記URLを参考ください。

参考URL:
http://www.eurus.dti.ne.jp/~yoneyama/Excel/jituyou/kinsyu.htm
  • umach
  • ベストアンサー率35% (600/1691)
回答No.4

B1が正の整数として、 A3:=int(b1/10^6) B3:=int(mod(b1/10^5,10)) C3:=int(mod(b1/10^4,10)) <中略> G3:=mod(b1,10) MIDは文字を操作する関数です。(返される値は文字) A3:=if(len(b1)>7,left(b1,len(b1)-6),"") B3:=if(len(b1)>6,mid(b1,len(b1)-5,1),"") <中略> G3:right(b1,1) if文を省略すれば簡潔ですが、桁数が足りないとエラー表示が出てしまいます。 式の内容が自身で理解出来なければ、後の改造やメンテで躓きます。 数字のまま扱った方が無難です。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

A2セルに次の式を入力して右横方向にオートフィルドラッグします。 =IF(LEN($B1)-COLUMN(A1)+1>7,LEFT($B1,LEN($B1)-6)*1,MID($B1,COLUMN(A1)+1,1)*1)

  • tostem41
  • ベストアンサー率38% (7/18)
回答No.2

いかがでしょう… 7桁目以降→left(b1,length(b1)-6) 6桁目→left(right(b1,6),1) 5〃→left(right(b1,5),1) 4〃→left(right(b1,4),1) 3〃→left(right(b1,3),1) 2〃→left(right(b1,2),1) 1〃→left(right(b1,1),1) エラーハンドリングはやって下さい。

回答No.1

文字列じゃなくて数値として考えればチョ~簡単。 G列は1の位だから=mod(B1,10) F列は10の位だから=int(mod(B1,100)/10) E列は100の位だから=int(mod(B1,1000)/100) D列は1000の位だから=int(mod(B1,10000)/1000) ::::::::::::::::::::::: A列は百万の位から上だから=int(B1/1000000) 頭に0がつくのがいやなら、if関数でも使って桁数をチェック、たと えばB列は、 =if(int(B1/100000),int(mod($B$1,1000000)/100000),"") みたいな感じ。

関連するQ&A