- ベストアンサー
EXCEL セルに一つずつ表示させるには(応用)
QNo.3005182で「EXCEL セルに一つずつ表示させるには」と質問したものです。 ――――――――――――――――――――――――――――――――――――――――――――――――――――― EXCELについて教えてください。 一つのセルにA1に123456と入力されているとします。 それを一つずつ分解して、B1には1。C1には2。D1には3というような形にしたいのですが。 MID関数を使うと近い形にはなりましたが、A1が12となっている場合に、B1に1、C1に2という形になります。 A1は12で、B1・C1・D1・E1は空白で、F1に1・G1に2と表示させたいのですが、なにかいい方法がありますでしょうか。 ――――――――――――――――――――――――――――――――――――――――――――――――――――― 数字入力セルと結果表示させるセルが隣あっていない場合ではどのようにしたら良いでしょうか? なにか良い方法がありましたら教えて頂けると助かります。 前回の質問と同じような事で申し訳ございません。 お力を貸して頂けると幸いです。 宜しくお願い致します。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
A B C D E F G 1 123456 1 2 3 4 5 6 2 12 1 2 B1=LEFT(RIGHT(" "&$A1,6-COLUMN(A1)+1)) ★右と下にコピー ★別に、数字入力セルと結果表示させるセルが隣あっている必要はありません
その他の回答 (6)
- mshr1962
- ベストアンサー率39% (7417/18945)
数値がG1にあってK1:P1までに表示の場合 K1=TRIM(MID(TEXT($G1,"??????"),COLUMN(A1),1) でP1までコピーする。 COLUMN(A1)のA1は値でなく列数(1)を取得する為に使っています。 L1ではこれがCOLUMN(B1)となり2を返すとういう按配です。
お礼
>COLUMN(A1)のA1は値でなく列数(1)を取得する為に使っています。 ありがとうございます。 簡単な関数しかわからないのでA1はセルを意味しているのかとおもいましたが、説明をいれて頂いているのでとてもわかり易かったです。
- redowl
- ベストアンサー率43% (2140/4926)
6桁以下数値限定で B1に下式。 これを、G1まで、コピペ =IF(ISERROR(MID($A1,LEN($A1)-COUNTA(C1:G1),1)),"",MID($A1,LEN($A1)-COUNTA(C1:G1),1)*1) この式を実行するにあたり、H~L列は未使用が条件。 というのは、セル 右列の数値表示セルをカウントしているので。 6桁の場合、右側5個の範囲 桁を増やしたければ、 C1:G1 の範囲を広げる(式中に2カ所)
お礼
ありがとうございます。 >H~L列は未使用が条件。 気をつけます。 注意事項をあげてくださって助かります。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
前回の質問でmshr1962さんの回答では、B列以降にcolumn()-1文字目 を持ってくることになっていました。つまり、結果をD列から書くの であればcolumn()-3で、Z列からならcolumn()-25となります。 今回のzap35さんやmu2011さんの回答も同じです。自分が何文字目を 持ってくることになってるのかをcolumn関数で数えているので、1文 字目を担当する列が1になるように、式を調節する必要があります。 前回のnishi6さんの回答では、結果をどこに書こうと式の後ろの方 の数値が変化している部分が何文字目を拾ってくるかを直接示して いるので、何も心配する必要はありません。結果を連続して書く必 要すらありません。
お礼
ありがとうございます。 関数は簡単なものしかわからないので、とても助かります。
- suekun
- ベストアンサー率25% (369/1454)
要は表示させるセルの設定な訳です。 右詰めを考えるなら、文字数を検索して Gはどの位置を拾うか? Fはどの位置を拾うか?ですよね。 単純に、右端Gは =RIGHT(A1,1) で表示できます。 F列は文字数を数えて、右から2番目の文字を取るのですから =MID(A1,LEN(A1)-1,1) あとは、 LEN(A1)-1 の部分の「-1」を数字を変えていけばいい訳です。 B列 =MID(A1,LEN(A1)-5,1) C列 =MID(A1,LEN(A1)-4,1) D列 =MID(A1,LEN(A1)-3,1) E列 =MID(A1,LEN(A1)-2,1) そしてエラー回避でIF関数を組めば、 =IF(ISERROR(MID(A1,LEN(A1)-5,1)),"",MID(A1,LEN(A1)-5,1)) となります。
お礼
関数の説明までして頂いてとてもわかり易かったです。 ありがとうございます。
- mu2011
- ベストアンサー率38% (1910/4994)
次の方法は如何でしょうか。 B1セルに=IF(RIGHT(INT($A$1/10^(7-COLUMN())),1)*1=0,"",RIGHT(INT($A$1/10^(7-COLUMN())),1)*1)を入力後、G1セルまでコピー
お礼
ありがとうございます。 B1に入力したら上手く表示できました。 数字入力セルと結果表示させるセルが隣あっていない場合には修正してみます。
- zap35
- ベストアンサー率44% (1383/3079)
>一つのセルにA1に123456と入力されているとします。 桁数は6桁以下として回答します B1セルに以下の式を貼り付けて右方向にコピーしてください =IF(LEN($A1)>=8-COLUMN(),MID($A1,COLUMN()+LEN($A1)-7,1),"") でも桁数がもっと多かったり、表示する位置が違う場合は式の修正が必要です。でも少し考えれば応用できると思いますよ
お礼
A1に入力して、B1からコピーすると表示できました。 時間のある時に修正して他のパターンにもチャレンジしてみます。 ありがとうございました。
お礼
>★別に、数字入力セルと結果表示させるセルが隣あっている必要はありません 今回探していた条件を完璧に満たしています。 ありがとうございます。