• ベストアンサー

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

  • 数字を分解してその和を別のセルに表示する方法

    数字を分解してその数字の和を求めようとしましたが,RIHGTやMIDなどでいろいろやってみましたが,出来ませんでした。誰か判る方宜しくお願い致します。 例えば,A1~D1の数字の分解後の数字の合計はE1~H1 となる様にする。 A1,B1,C1,D1 → E1,F1,G1,H1 71,121, 35, 85 → 8,4,8,4 ここで,D1セルは 2回分解をする。(8+5=13→1+3=4)

  • エクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ、「右詰」で移したい

    以前に エクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ移したい、ということで質問しまして、「MID関数を利用する」事で、先頭文字から一文字ずつ別々なセルに移すことが出来ましたが、スミマセンが次のような場合はどのような関数になるのでしょうか? 例えば「番地などの表示」等で1桁の場合もあれば、5桁あるいは6桁等々の場合もあるとします。これを別なセルに下一桁を合せる様にしたいのです。 例としまして セルA1に1桁~6桁の数字(例:345678)を入力した場合、これを右側のB1には3を、同様にC1には4を、D1=5、E1=6、F1=7、G1=8を関数で入力できるようにしたい。 問題は、桁数が毎回違う場合にG1に下一桁が来るようにしたいのですがRIGHT関数では下一桁だけ応答されるのは上手くいくのですが、下二桁、三桁以上の場合には上手くいきません。 つまり「A1に789」の数字を入力したら、G1=9が、F1=8が、E1=7が応答されるようにしたいのです。 勿論、5桁の場合にはB1が空欄で、C1、D1、E1、F1、G1が埋まる様に、4桁であればB1とC1が空欄で、D1~G1が埋まるように、三桁の場合にはB1~D1が空欄でE1~G1が埋まるようにですが、出来ますでしょうか?? よろしくご教授お願いします。

  • エクセルのセル内数字の分割転記

    またしてもド素人の質問で恐縮ですが、 ある列に桁数の異なる数値が縦に並んで記載されているとき、 セルと同一列の別のセルに、数値を一文字ずつ分割して、下記の様に表示させたいのです。 (G列の数字はすべて右揃えのつもりです)   A B C D E F G 1  5 4 3 2 1   54321 2      1 2 3    123 3        2 2     22 4      6 5 2    652 5          9     9 そこで、A1には、=LEFT(RIGHT($G1,5))、B1には=LEFT(RIGHT($G1,4))、というように、関数を入れておき、1列目はA1からE1まで無事表示できました。 しかし、2列目以降にA1からE1の各セルの式を転記しますと、 1  5 4 3 2 1    54321 2  1 1 1 2 3     123 3  2 2 2 2 2      22 4  6 6 6 5 2     652 5  9 9 9 9 9       9 と、なってしまいました。空白にしたいところに指定セルのトップの数字が入ってしまうんです。指定したセルの数字の桁数よりも大きな部分は空白にしたいのですが、 「もしも何かの条件に合わねば空欄に」というようなことができれば幸いなんですが、どのようにすればいいのかをお教えください。

  • 1つのセルの数字を複数のセルに1文字づつ表示したい

    こんばんは。 いつも勉強させていただいています。 下記について、ご教示いただければ幸いです。 K1セルには、最小で1桁から最大で9桁までの数値が入力されます。 それを A1からI1までに1つづつ表示させたいのです。 例1) K1 に 10105 と入力した場合 A1からD1まではブランク E1に1、F1に0、G1に1、H1に0、I1に5 例2) K1 に 101050235 と入力した場合 A1に1、B1に0、C1に1、D1に0、E1に5、F1に0、G1に2、H1に3、I1に5 なお、同じシートの他のセルには0を入力する場合があるため、「ゼロ値のセルにゼロを表示する」のチェックを外すことはできません。 私なりに考えたのは、K1セルの数値をL1に =TEXT(K1,"000000000")として文字にし、M1から右のセルに =MID($K$1,1,1) というように各桁を抜き出す方法だったのですが、10000 のように丸い数字をK1に入力すると 1 は表示できても 0 がブランクになってしまいます。 いい方法がありましたら、ぜひご教示下さい。 よろしくお願いいたします。

  • 重複数字を切り取り空いた隙間を右詰めするには?

    どなたかご存知でしたら回答をお願いします。 【質問】 下図の様に5×5のセルが2つあり、それぞれ1~99迄の数字がランダムに 重複有りで入っています。5×5のセルの中には行の連続数字(例:02 03) が入っています(1個も無い場合もあります。1行全部(5個)の場合もあります。)。 行の連続数字を見つけたら、その連続数字を切り取り「◎重複数字」の下に順番に 並べていき、切り取られた空白箇所を埋めるために左側にある数字を右に詰める 方法が知りたいです。 【例題】 A B C D E  F  G H I J K   1 0107091122     0310203031 2 0412141523     0102070922 3 0713171825     0411121415 4 0616212426     0213171823 5 0819272829     0607080910 【実行後】 A B C D E F  G H I J K   1 0107091122          031020 2   041223          070922 3   071325            04 4 0616212426          021323 5    0819           ◎重複数字 14 15         30 31 17 18         01 02 27 28 29       11 12               14 15              17 18              06 07 08 09 10       【注意事項】  ・使用するエクセルは2010です。  ・セルの中の数字は2桁で表しています。(例:1ではなく01)  ・5×5のセルの位置は下記のとおりです。    1個目の5×5マス・・・A1~E5    2個目の5×5マス・・・G1~K5     ※F列は空白列として空けています。   ・回答はVBでも関数でも構いません。 以上、よろしくお願いします。

  • 円マークを自動で表示するには

    請求書において シート1で押印及び合計金額 シート2で明細、計、消費税、合計 が表示されている状態です。 シート1の合計金額の部分は1桁1セルになっており(指定請求書がそういう形式の為変更できません) =(MID(RIGHT(" "&シート2!E32,1),1,1)) 以下同様 =(MID(RIGHT(" "&シート2!E32,6),1,1)) として各セルに1桁づつシート2の合計からとりだして記入している現状です A1|B1|C1|D1|E1|F1|G1|H1 (セル) 無|¥|6|5|4|3|2|1 (桁数) しかし、7桁目が入ったり入らなかったりするので合計をいつものつもりで6桁でいると1桁足らない請求になってしまいます。 常にチェックすればいいのですが、 if等を用いて シート2の合計の7桁目に数字が入っていれば数字を、入っていない場合は”¥”をとしたいのですが、うまくいきません。 =IF((MID(RIGHT(" "&シート2!E32,7),1,1))>0,(MID(RIGHT(" "&シート2!E32,7),1,1)),"\") としても7桁目にはなにかあると判断されているようでうまくいきません。 シート2の合計に\がないので認識できないのだと思いますが、 A1|B1|C1|D1|E1|F1|G1|H1 (セル) 無|無|6|5|4|3|2|1 (桁数) となってしまいます。 7桁目が無い場合 A1|B1|C1|D1|E1|F1|G1|H1 (セル) 無|\|6|5|4|3|2|1 (桁数) 7桁目が有る場合 A1|B1|C1|D1|E1|F1|G1|H1 (セル) \|7|6|5|4|3|2|1 (桁数) とするにはどのようにすればよいでしょうか。 わかりにくい解説で申し分けありませんが、お力をお貸しください。

  • Excel2000使用・関数式を教えてください

    A列~AV列まで6桁の数字が入力されています。 行によって、入っている件数(F列までデータが入っているとか、 AC列まで入っているとか)はマチマチです。 入っている数字もマチマチです。 数字の中には、000001、001000など、0から始まる数字もあり、 セルの書式設定はユーザー定義で種類を000000にしています。 別sheetに6桁の数字の一覧があるのですが、 (1)一覧にない数字が入力されているとエラーが表示されるようにしたい また、 (2)6桁の数字は前半3桁と後半3桁が隣の列のセルと一致しないといけないのですが、 不一致の場合は、エラーが表示されるようにしたい 例) A2 000001 B2 001000 C2 000120 D2 120346 E2 346508 F2 508346 G2 346508・・・    A3 123456 B3 456280 C3280002 D3 002428 E3 428508 F3 508346 G3 346213・・・ E2 346508 F2 508346 G2 346508 のように数字が繰り返すこともあります。 Light関数を使うと(2)は解決できたのですが(1)が解決しません =IF(RIGHT(TEXT(入力Sheet1!A2,"000000"),3)=LEFT(TEXT(入力Sheet1!B2,"000000"),3),"","ERR") MATCH関数を使うと =MATCH(入力Sheet1!A2,一覧sheet!$A$2:$A$500,0) (1)は解決したのですが、(2)が解決しません。 (1)(2)とも解決する式、或いは方法を教えて頂けたら助かります。 上記の関数式は、以前、この場で教えていただいたものです。 入力用のシートと別に、検証用のシートを作成しています。 又、もし、もし可能でしたら、別シートにある数字が4桁と5桁と6桁が混在している場合でも流用できるものであるとなお有り難いです。 その場合は前後の3桁が一致するときと、前後の2桁が一致するときがあるという イレギュラーなケースになります。入力した数字は以下のようになります 12345 4512 12650 65034 3458 58260 260013 013134 ・・・ よろしくお願い致しますm(__)m

  • 数字の桁ごとに、各セルに抽出

    最大11桁の数字を各セルに抽出したい。 金額をF列に入力すると、 D列には下3桁が表示され、 C列には右から6桁~4桁、 B列には右から9桁~7桁、 A列には右から11桁~10桁と、 表示されるように、関数を組みたいです。

  • エクセルで数字を1文字ずつセルに入れたい

    エクセルでの質問です 1つのセルに例えば”1530”という数字を入力します そうすると その数字を分解して f1のセルに”0” e1のセルには”3” d1のセルに”5” c1のセルに”1” b1のセルに”¥”が自動的に入るようにしたいのですが どうすれば良いでしょう 数字は4ケタ~7ケタまで変わります よろしくお願いいたします。

  • mathmaticaの有効数字について

    こんにちは Mathmaticaを使用して、ある条件式を解きたいのですが、式が複雑すぎるのか、計算を実行しても2時間たってもできない上、パソコンで他の作業をすると「メモリ不足でできません。他のアプリケーションを閉じてもう一度実行してください」的なメッセージが出て、振り出しに戻りました。使用しているパソコンのスペックはPentium4の3GHzでメモリは2Gです。 具体的に解きたい計算は二次方程式で A=B+C A×f(A)= B×f(B)+ C×f(C) の二次方程式です。 Aは実数で有効数字3桁の実数で、Aを決めることで、B,Cを求めたいのです。 f(x)が少しややこしく、具体的にはf(x)=a+b/(x^2-c)+d×x^2]^(1/2) という関数なのです。ここでa.b.c.dは有効数字6桁の実数です。 最終目標はAを連続的に変化させて、Aに対するBとCの変化を見たかったのですが、 数式を書いてとりあえずAを変化させずに一つのAに対してB,Cが求まらないので、どうしようか悩んでいます。 前置きが長くなって申し訳ありません。 質問内容は 1.この方程式を解くためにはどうすればいいでしょうか。 2.求めたいB,Cの精度は有効数字3桁でいいので、 このB,Cの有効数字を3桁程度に指定できればらくだと思うのですが、そのような事は可能でしょうか? f(x)に使うa.b.c.dはあまり有効数字を落としたくはありません。

専門家に質問してみよう