- ベストアンサー
あるセルに入れた数字を別のセルに一桁ずつ表示する方法は?(Excel2000)
皆さまのお知恵を貸していただきたく、質問いたします。 使用ソフトはExcel2000です。 以下のようなことを自動的にできるような方法(関数等を使って)はありますでしょうか?? 《例》 (1)A1に「153962」と数字を入れると・・・ (2)A4に「1」、B4に「5」、C4に「3」、D4に「9」 E4に「6」、F4に「2」 と、自動的に表示されるようにする。 なにか良い方法がありましたら、教えて下さい。 よろしくお願いいたします。
- みんなの回答 (12)
- 専門家の回答
質問者が選んだベストアンサー
■補足 参照させるのが不便なら↓のようにしてください。 C列からJ列のセルを使いたいのであればCOLUMN()の所をCOLUMN()-2とします。 =IF(MID(REPT(" ",8-LEN($A$1))&$A$1,COLUMN()-2,1)=" ","",VALUE(MID(REPT(" ",8-LEN($A$1))&$A$1,COLUMN()-2,1))) E列からならCOLUMN()-4 (Eは5列目だから-4で1にしてる)
その他の回答 (11)
- april21
- ベストアンサー率42% (91/216)
■前回のだと分かり図らかったと思うので補足しておきます。 AからJ列(10桁の場合)に↓の数式をコピーして貼り付けてください。(COLUMN()を使ってるので) =IF(MID(REPT(" ",10-LEN($A$1))&$A$1,COLUMN(),1)=" ","",VALUE(MID(REPT(" ",10-LEN($A$1))&$A$1,COLUMN(),1))) 10の部分が2ヶ所あります。 8桁にしたければ10を8に変更して数式を入力するセルもA~Hまで。 A~Hの列ではなく別のセルに表示させたい場合はこれらのセルを参照させれば 良いと思います。(入力が楽ですから) 他の方法だとVBAを使うのも良いと思いますが・・・。
- april21
- ベストアンサー率42% (91/216)
>例えば銀行で書かされる伝票の金額の覧には右から「1」「十」「百」「千」・・・という感じでマス目が切ってありますよね?あんな感じで、数値を取り出したかったのです。 =IF(MID(REPT(" ",10-LEN($A$1))&$A$1,COLUMN(),1)=" ","",VALUE(MID(REPT(" ",10-LEN($A$1))&$A$1,COLUMN(),1))) ↑は10桁の場合10のところ変えてください。 前回説明したので省きます。 仕事中で忙しいので分かり図らければ補足を要求してください。 夜でないと答えられないけど。^_^;
ごめんなさい、No.8は、 前回と同じく、B1のセルに入れるものとします。 説明不足だったので補足します。 最大桁が6桁で、かつA4のセルに桁の先頭をおきたいのであれば、 7-COLUMN() ではなくて、 6-COLUMN() です。先頭列を左に動かすと1減り、右に動かすと1増えます。
お礼
No.8およびNo.9のお礼を。。。 何度もご回答いただき、本当にありがとうございます。お陰様で、不必要な0は表示されなくなり、「100」などの数字はきちんと表示できるようになりました。 これはちょっとした感動です!友達にも教えてあげようと思っています(笑)。 最初の質問の仕方がイマイチだったために、いろいろお手数をおかけしてしまいましたが、こんな私にあきれずに丁寧に教えていただいて、ありがとうございました!言葉尽くせませんが、本当に感謝していますm(._.)m。
言われてみれば確かに、100だと下が切れてしまいますね(笑) =IF($A1>10^(7-COLUMN()),MOD(INT($A1/10^(7-COLUMN())),10),"") これならどうでしょう?やってみてください。 確認済みです。きっとこれが正解だと思います。 ちなみに最大桁が8桁の場合は7-COLUMN() となっているところを9-COLUMN() に直してやってみてください(最大桁に1を加える) 自動車のナンバーが3桁になったときや、 携帯電話が11桁になったときに社会問題(?)になったのを 思い出しました。最大桁を増やすのって、大変なんですね(笑)
- comv
- ベストアンサー率52% (322/612)
成る程・・・やっとご質問の最終形らしきものが解って来ました。 (1)数値を1セル1桁で取り出す。 (2)右寄せ(桁合わせ) (3)無い桁は空白 これでよろしいでしょうか? 数値の分解数式は、今までの皆さんのどれを使っても可能 なので、チョット違う観点(表示)に拘って 例)見易くするために入力欄(A列)と出力欄を同行にしてます A B C D E ・・ K L 1 入力欄 =10^9 =10^8 =10^7 ・・=10^1 =10^0 ←表示形式 [DBNum3]G/標準 2(数値) =IF(LEN($A2)>LOG10(C$1),MID($A2,LEN($A2)-LOG10(C$1),1),"") 3(数値) (上記数式を複写) ・今回は10億までの桁です ・桁の記入例は、解り易くするため乗数にしましたが、当然 1 10 100 1000 等 (L列~)を入力してもOKです。 ・表示形式 [DBNum3]G/標準 書式設定 → 表示 → ユーザー定義 で記入して下さい。 [DBNum2]G/標準 や [DBNum1]G/標準 もお好みに応じて変えてみて下さい。 ・数式はセルC2に入力後、L列まで複写 及び 必要入力行数分 下行へ複写 こんな感じでしょうか?
お礼
再度お答えいただいて、本当にありがとうございます(^-^)。 表示形式の [DBNum3]G/標準 というのは初めて知りました(不勉強なもので・・・(汗)。) 漢数字になったり、壱とか弐とかって表示できるんですね~~!素直にびっくりです(←あきれないで下さいね~~)。すごいすごい!! なんだか、まったく別の角度から切り込んでいただいたりして、楽しく拝見いたしました。ありがとうございました!
- yuhki_f
- ベストアンサー率32% (32/99)
A1に入力されている「153962」は、つぎのようにして一桁ずつの数値に変換できます。 MOD(153962,10)=2 Int(mod(153962,100)/10)=6 Int(mod(153962,1000)/100)=9 Int(mod(153962,10000)/1000)=3 Int(mod(153962,100000)/10000)=5 Int(mod(153962,1000000)/1000000)=1 一般化するために、一番目の式を次のように書き換えます。 Int(mod(A1,10)/1) つぎに10,100,1000などを一般式で得る方法を考えます。 10^0=1 10^1=10 10^2=100 ですからcell関数で列数を取り出すと、べき乗の計算がうまく作れます。これを組み合わせてA4に次のように入力して、右方向にコピーすると各桁の数値を 取り出すことができます。 =INT(MOD($A$1,10^(CELL("col",A1)))/10^(CELL("col",A1)-1)) こうすると、次のように数値が表示されます。 A4 2 B4 6 C4 9 D4 3 E4 5 F4 1 pinoko19さんの質問とは逆のならびになってしまいますが、何とか一桁ずつ取り出すことはできます。
お礼
ご回答、ありがとうございます。 逆の並びで取り出す方法もあるのですね~~!!!ビックリです。 べき乗を使うのですね。数学が苦手だったので(汗)、あんまり難しい式になってくるとなんだかドキドキしてしまいますが(笑)。 勉強になりました。本当にありがとうございました!!
ほとんど回答済みのようですが、 下の例はあくまで、A1とA4(つまり入力側と出力側の左端の列は同じ)の場合限定です。これだと、複数の数値を同時に扱いたいときには不便だと思うので、 さらに補足させてください。 本当は真横のB1セルからはじめたいという場合は =MID($A1,COLUMN()-1,1) いやいや、C1セルからはじめたいんだってときは、 =MID($A1,COLUMN()-2,1) ←離れた分引く数が大きくなることに注意 です。数値に直したい場合は更にvalue()で括ることは先人の方々のとおりです。 ただ、この方法では、数字は全て左端から始まるので、 一の位を揃えたい(右揃え)というときには適しているとはいえません。 その場合の対処法も書いておきます。 これは複数の数値の最大桁が6桁の場合、ということでよろしくお願いします。 値の結果は数値です。(valueを使う必要はない) B1 =mod(int($a1/10^(7-column())),10) あとはこれを横にコピーすればOKです。(確認済) 6桁なので、「7-」があります。 このままの設定でA1に1234(4桁)を入力すると順に001234となりますが、0表示をオフにしておけば問題ないでしょう。
お礼
ご回答、ありがとうございます。 なんとかできないものか、と思っていたことに、色々な方法があることを知ることができ、嬉しい限りです(^-^)。 masuo_kunさんの回答は、私の求めている内容に一番近いような気がします。 実は、私の質問の仕方が悪くて、以下のようなことが抜けていました。。。 (1)例としてあげた数値は6桁でしたが、実際には桁数が増えることも減ることもあります。 (2)例えば銀行で書かされる伝票の金額の覧には右から「1」「十」「百」「千」・・・という感じでマス目が切ってありますよね?あんな感じで、数値を取り出したかったのです。 (数値を一桁ずつセルに入れていくのは煩雑なので、一つのセルにある金額を入れるとそれを一桁ずつ別のセルに反映できるようにし、業務を効率化したいと思ったのです。) というわけで、masuo_kunさんのおっしゃるように右揃えにしたかったのです。 私が質問に含めなかった内容にまで掘り下げて回答してくださったこと、感謝しています。早速やってみましたところ、うまくいきました!! そこで、ここでさらに質問をするのはずうずうしいかも・・・と思いつつ、質問させてください。(スミマセン・・・。) 「このままの設定でA1に1234(4桁)を入力すると順に001234となりますが、0表示をオフにしておけば問題ないでしょう。」 と、あるのですが例えば「100」という数値を入れたい場合はどうしたらいいのでしょうか? (ためしにやってみたのですが、0表示をオフにしてしまったら、1の位と十の位の0も表示されなくなってしまいます。) わがまま言ってしまって、申し訳ございません。もし方法として無理ならかまわないのですが、なにか手があれば教えてください。よろしくお願いいたします。
- comv
- ベストアンサー率52% (322/612)
こんにちは セルA4に =MID($A1,COLUMN(),1) あとは最大必要桁数分だけ横(B4~)に複写 既に皆さんが提言済みですが 文字型でよいのであれば このまま 数値型で扱たいのであれば =VALUE(MID($A1,COLUMN(),1)) となりますね。
お礼
ご回答、ありがとうございます。 この式はAprilさんの方法に近いのでしょうか。A1を絶対参照ではなく列のみ固定して、横に複写できるようにしていただいているのですね。ナルホド~。 確かに、必要な桁数分、コピーできるのは非常に便利です!! ありがとうございました。
- april21
- ベストアンサー率42% (91/216)
補足 VALUE(MID(元のセル,何番目から,何個)) 「何番目から」は元となる数字の左から何番目という事です。 「何個」は例だと1ですね。 数値に直さなくてもいい場合はVALUE( )は不要です。
お礼
No.2、および、こちらの補足のご回答、ありがとうございます。 No.1の方に教えていただいたのとはまた違う方法なのですね。きっと、エクセルに詳しい方にとっては、このようなこと一つ取っても、色々なやり方があるのでしょうね。 早速Aprilさんの方法も試してみます。 本当に、ありがとうございました!
- april21
- ベストアンサー率42% (91/216)
下記の数式をA4~はF4に =VALUE(MID($A$1,COLUMN(),1)) VALUE(MID(元のセル,何番目から,何個)) 1~6を入力が楽なのでCOLUMN()で列数を求めてますが (A4なら1、B4なら2・・・が求められるので。) COLUMN()の所を1~6というように数字で指定して構いません。 (表示させたいセルの列が連続してないとCOLUMN()使っても仕方ないので(^^ゞ)
- 1
- 2
お礼
Aprilさん!お仕事でお忙しい、とのことでしたのに、何度も書き込んで頂いて本当に本当にありがとうございます。No.10~12のお礼を言わせてください。 早速書き込んでいただいた内容をコピーしてセルに貼り付け、実践してみました。ちゃんとできてただいま感激しています~w(゜o゜)w!! 使う側のことを考えてくださって、いろいろなパターンを提示していただき、本当にありがたく思っています。m(_ _)m しっかりと仕事に生かしたいと思います。言葉尽くせませんが、本当に有り難うございました!!