- 締切済み
一つのセルに3桁ずつ計算結果を表示させる方法
一つのセルに3桁ずつ計算結果を表示させる方法 エクセルで、ある数式の計算結果が12345678だったとします。 A1に12、A2に345、A3に678を表示するというように、右から3桁ずつ計算結果を格納する方法はありますでしょうか? よろしくお願いいたします。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- mshr1962
- ベストアンサー率39% (7417/18945)
B1=12345678として A1=IF(LEN($B$1)>6,RIGHT(TEXT(TRUNC($B$1/10^6),REPT("0",LEN($B$1)-6)),3),"") A2=IF(LEN($B$1)>3,RIGHT(TEXT(TRUNC($B$1/10^3),REPT("0",LEN($B$1)-3)),3),"") A3=IF(LEN($B$1)>0,RIGHT(TEXT(TRUNC($B$1/10^0),REPT("0",LEN($B$1)-0)),3),"")
- KURUMITO
- ベストアンサー率42% (1835/4283)
次のようにすればよいでしょう。 A1セルに数値を入力するとしてA2セルから下方に右から3桁ずつの数字を表示させるとしたら、A2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)=1,MID(A$1,1,LEN(A$1)-(ROUNDUP(LEN(A$1)/3,0) -1)*3),MID(A$1,LEN(A$1)-3*(ROUNDUP(LEN(A$1)/3,0)-ROW(A1)+1)+1,3))
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答番号:ANo.5です。 因みに、3桁区切りのデータの最初に「0」が来る場合には、2桁表示になってしまっても構わずに、数値データとして取り扱う場合には、A1セルとA2セルに入力する数式を、以下の様に変更して下さい。 A1に入力する数式 =IF(ISNUMBER($B$1),VALUE(LEFT($B$1,MOD(LEN($B$1),3)+(MOD(LEN($B$1),3)=0)*3)),"") A2に入力する数式 =IF(ROWS($1:1)>INT(LEN($B$1)/3)-(MOD(LEN($B$1),3)=0),"",VALUE(MID($B$1,MOD(LEN($B$1),3)+((MOD(LEN($B$1),3)=0)+(ROWS($1:1)-1))*3+1,3)))
- kagakusuki
- ベストアンサー率51% (2610/5101)
「89012」を3桁区切りにした際の2行目の「012」の様に、3桁区切りのデータの最初に「0」が来る場合には、数値データですと、「12」という具合に2桁になってしまって、紛らわしいため、文字列データで扱う事にします。 今仮に、元の数値である計算結果の数値データが、B1セルに存在するものとします。 まず、A1セルに次の数式を入力して下さい。 =LEFT($B$1,MOD(LEN($B$1),3)+(MOD(LEN($B$1),3)=0)*3) 次に、A2セルに次の数式を入力して下さい。 =MID($B$1,MOD(LEN($B$1),3)+((MOD(LEN($B$1),3)=0)+(ROWS($1:1)-1))*3+1,3) そして、A2セルをコピーして、A3以下に貼り付けて下さい。 以上で準備は完了で、後はB1セルに合計値が表示されると、自動的に、その値がA列に3桁区切りで表示されます。
- okormazd
- ベストアンサー率50% (1224/2412)
C1に計算結果があるとして,A2以下に3桁ずつ表示する。 A2: =MID(" "&C$1,LEN(" "&C$1)-14,3) A3: =MID(" "&C$1,LEN(" "&C$1)-11,3) A4: =MID(" "&C$1,LEN(" "&C$1)-8,3) A5 =MID(" "&C$1,LEN(" "&C$1)-5,3) A6: =MID(" "&C$1,LEN(" "&C$1)-2,3) EXCELで普通に表示できる最大桁数15桁(通貨)に対応するため," "は15個の半角スペースです。 ROW()を使えば,1つの式(下記)でいいが。 A2: =MID(" "&C$1,LEN(" "&C$1)-20+ROW()*3,3) として,下にフィルすればよい。どこにこの数式を入れるかによって,20+ROW()*3の部分は変わってくる。 なお,以上いずれも文字列として表示しているので,数値として表示したいのであれば, =VALUE(MID(" "&C$1,LEN(" "&C$1)-20+ROW()*3,3)) などとすれば数値になるが,"012"などが"12"になってしまう。これをどうするのかはそちらの仕様だね。
- tom04
- ベストアンサー率49% (2537/5117)
No.1・2です! ほんとぉ~!っに!何度もごめんなさい。 前回の数式だと、仮にA1セルの値が「12000000」のように下3桁が「000」になる場合は 「000」が表示されずに空白になってしまいます。 もう一度No.2のA3セルの数式を変更してください。 A3セルは =IF(A$1="","",IF(AND(A2="",MOD(INT(A$1/(10^(3*(4-ROW(A1))))),1000)=0),"",IF(A2="",MOD(INT(A$1/(10^(3*(4-ROW(A1))))),1000),TEXT(MOD(INT(A$1/(10^(3*(4-ROW(A1))))),1000),"000")))) として、A6セルまでオートフィルでコピーです。 これで大丈夫だと思います。 何度も失礼しました。m(__)m
- tom04
- ベストアンサー率49% (2537/5117)
No.1です! たびたびごめんなさい。 前回は列方向に表示させる方法でした。 質問文をもう一度読み返してみると、行方向に表示させたいということでしたので、 もう一度数式を載せておきます。 A1セルにデータの数値があるとします。 前回同様、A2セルは空白にし、A3セルに数式を入れてください、 A3セルは =IF(A$1="","",IF(MOD(INT(A$1/(10^(3*(4-ROW(A1))))),1000)=0,"",IF(A2="",MOD(INT(A$1/(10^(3*(4-ROW(A1))))),1000),TEXT(MOD(INT(A$1/(10^(3*(4-ROW(A1))))),1000),"000")))) としてA6セルまでオートフィルでコピーしてみてください。 これで12桁の数値まで対応できると思います。 どうも何度もごめんなさいね。m(__)m
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 参考になるかどうか判りませんが・・・ とりあえず12桁の数値まで対応するようにしてみました。 仮に、百・十万・一億 の位に「0」がある場合は二桁表示になってしまいますので、 かなり強引な方法になります。 A2セルから縦にデータがあり、B列は空白にし、C列以降に表示させるようにしています。 C2セルに =IF($A2="","",IF(MOD(INT($A2/(10^(3*(4-COLUMN(A2))))),1000)=0,"",IF(B2="",MOD(INT($A2/(10^(3*(4-COLUMN(A2))))),1000),TEXT(MOD(INT($A2/(10^(3*(4-COLUMN(A2))))),1000),"000")))) という数式を入れ、列方向と行方向にオートフィルでコピーではどうでしょうか? 尚、セルによっては「左揃え」で表示されるかもしれませんので、最後に「右揃え」にしておいた方が見栄えとしては良いかもしれません。 この程度ですが、他に良い方法があれば読み流してくださいね。m(__)m