• ベストアンサー

エクセル 文字を右詰めで1つのセルに1文字ずつ入力した形に変更するには

いつもお世話になります。 昨日、MID関数等で、1つのセルに入力されている情報を1文字ずつセルに入力する方法を知ったのですが、それを右詰めにする方法はありますでしょうか。 例;Sheet1に、6ケタまでの数値を入れるセルがあります。 これをSheet2のA1~F1のセルに1字ずつ入れたいのですが、Sheet1に"1000"と入れた場合、Sheet2のセルA1~F1には A1=(空白),B1=(空白),C1="1",D1="0",E1="0",F1="0" という形にしたいのです 以上宜しくお願い致します。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 数値限定で。 Sheet2のA1に、 =MID(TEXT(Sheet1!$A$1,REPT("?",6)),COLUMN(A1),1) と入力して、右へコピーします。 ちなみに、この数式だと数字がない桁は空白ではなく半角スペースが入ります。 もし、半角スペースも入れたくないなら、 =TRIM(MID(TEXT(Sheet1!$A$1,REPT("?",6)),COLUMN(A1),1)) とTRIM関数を通して下さい。 また、最大桁数が変わる場合は、数式中の「6」を任意に変更して下さい。

7-samurai
質問者

お礼

いつもお世話になります。 お礼が遅くなりまして申し訳ございません。 ありがとうございました。 おかげさまで問題解決しました。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

(データ) 12345 234 1345 34 (関数式) B1に =MID(REPT(" ",6-LEN($A1))&$A1,COLUMN()-1,1) といれ、G1まで式を複写する。 B1:G1を範囲指定して、G1で+ハンドルを出し 最下行まで複写する。 (結果) 1 2 3 4 5 2 3 4 1 3 4 5 3 4

7-samurai
質問者

お礼

いつもお世話になります。 お礼が遅くなりまして申し訳ございません。 ありがとうございました。 おかげさまで問題解決しました。

  • el2368
  • ベストアンサー率71% (232/325)
回答No.4

Sheet1のA1に6桁を入力なら 【数式_半角スペース】 A1=MID(TEXT(Sheet1!A1,"??????"),1,1) B1=MID(TEXT(Sheet1!A1,"??????"),2,1) C1=MID(TEXT(Sheet1!A1,"??????"),3,1) D1=MID(TEXT(Sheet1!A1,"??????"),4,1) E1=MID(TEXT(Sheet1!A1,"??????"),5,1) F1=MID(TEXT(Sheet1!A1,"??????"),6,1) Sheet1のA1をまず6桁であると認識させるのに、「TEXT」関数を使っています。 「"000000"」とすると、1000のまえの未入力部分は「0」になり、 「"??????"」とすることで、「 (半角スペース)」にすることが出来ます。 「?」の数を変えれば、10桁でも、4桁でも対応可能です。 【数式_空白】 また、「 (半角スペース)」ではなくNull値(空白)が良ければ、 A1=TRIM(MID(TEXT(Sheet1!A1,"??????"),1,1)) B1=TRIM(MID(TEXT(Sheet1!A1,"??????"),2,1)) C1=TRIM(MID(TEXT(Sheet1!A1,"??????"),3,1)) D1=TRIM(MID(TEXT(Sheet1!A1,"??????"),4,1)) E1=TRIM(MID(TEXT(Sheet1!A1,"??????"),5,1)) F1=TRIM(MID(TEXT(Sheet1!A1,"??????"),6,1)) でOKです。 「TRIM」関数で、「 (半角スペース)」を消しています。 【補足】 Sheet1のA1は数値との事ですのでこれでOKですが、もし、A1が文字列の場合、「0100」と入力する場合も考えられます。このように入力すると、左から最初に「1」以上の数が出るまでは、「 (半角スペース)」になります。TRIMを使えば、「空白」です。 「0100」⇒「 100」

7-samurai
質問者

お礼

いつもお世話になります。 お礼が遅くなりまして申し訳ございません。 ありがとうございました。 おかげさまで問題解決しました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

処理する文字列を " "&sheet1!A1 ↑ 空白2つ にすれば良いだけのように思いますが

7-samurai
質問者

お礼

いつもお世話になります。 お礼が遅くなりまして申し訳ございません。 セルの中に入れる数値が最大6ケタでも、5ケタや3ケタの場合もあるので、残念ながらいただいたお答えでは処理が出来ませんでした。 ですが、他の方々からのお答えで、問題解決しました。 ありがとうございました。

回答No.1

Sheet1のA1に6桁以下の数値が入っているとします。 べたな書き方だと以下のようになります。10桁とかになればもう少し工夫しますけどね。 A1 = IF(LEN(Sheet1!A1) < 6, "", MID(A1,LEN(Sheet1!A1)-5,1)) B1 = IF(LEN(Sheet1!A1) < 5, "", MID(A1,LEN(Sheet1!A1)-4,1)) C1 = IF(LEN(Sheet1!A1) < 4, "", MID(A1,LEN(Sheet1!A1)-3,1)) D1 = IF(LEN(Sheet1!A1) < 3 "", MID(A1,LEN(Sheet1!A1)-2,1)) E1 = IF(LEN(Sheet1!A1) < 2 "", MID(A1,LEN(Sheet1!A1)-1,1)) F1 = IF(LEN(Sheet1!A1) < 1 "", MID(A1,LEN(Sheet1!A1),1))

7-samurai
質問者

お礼

いつもお世話になります。 お礼が遅くなりまして申し訳ございません。 いただいたお答えでも問題解決できたのですが、他の方からTEXT関数とREPT関数の組み合わせを教えていただき、コピーで対応できたので、そちらを使わせさせていただきました。 ですが、いただいたお答えも、ぜひ今後の参考にさせていただきます。 ありがとうございました。

関連するQ&A

  • エクセル 文字を1つのセルに1文字ずつ入力した形に変更するには

    いつもお世話になります。 エクセルの1セルに、13ケタの商品コードがあります。 これを、別シートのフォーマットにある、13コのセルに1字ずつに分割したいのです。 例えば、"4901234567890"という数値がセルに入力されていて、別シートのA1には"4"A2には"9"、A3には"0"・・・という形です。 同様に、商品名等の情報も、1文字ずつセルに入力していきたいのですが、そのようなことを可能にする技術がありますでしょうか? 以上宜しくお願い致します。

  • Excelで数値を右詰めでセルに一つずつ分割したい

    Excel2007です。 最大10桁の数値をセル毎に分割したい。 その際、1の位を一番右にして、右詰めで表示したい。 関数でする方法は、ありますか? 左詰めなら =MID($A1,COLUMN(A1),1)でできることは 調べてあります

  • エクセルのセルに入れた文字あるいは数字を別なセルに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が埋まるようにですが、出来ますでしょうか?? よろしくご教授お願いします。

  • 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 がブランクになってしまいます。 いい方法がありましたら、ぜひご教示下さい。 よろしくお願いいたします。

  • 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と表示させたいのですが、なにかいい方法がありますでしょうか。

  • 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と表示させたいのですが、なにかいい方法がありますでしょうか。 ――――――――――――――――――――――――――――――――――――――――――――――――――――― 数字入力セルと結果表示させるセルが隣あっていない場合ではどのようにしたら良いでしょうか? なにか良い方法がありましたら教えて頂けると助かります。 前回の質問と同じような事で申し訳ございません。 お力を貸して頂けると幸いです。 宜しくお願い致します。

  • エクセルVBAで関数が入った空白セルの取得

    エクセルVBAで下記のようなセルの参照をしたいのですが、よろしくお願いします。(エクセル2002です)   A  B  C  D  E  F 1 78 80 セル(A1)(B1)には値も関数も入れられています。 セル(C1)(D1)(E1)には値は入っていませんが、ワークシート関数が組み込まれており空白となっています。(関数の""にて空白) セル(F1)には何も入力されていません。 今回はセル(B1)の80の値を取得できるようにVBAで下記のようにコードを組みました。 Range("F1").End(elToLeft).Activate そうすると、セル(E1)に関数があるために(?)(E1)がアクティブな状態となります。 関数が入力されていても空白として(B1)をアクティブな状態にするために良い方法はありますでしょうか? 誠に申し訳ございませんが、よろしくお願いします。

  • エクセルとセルの比較について

    エクセルとセルの比較について エクセル2007で二枚のシートを以下のように作成しました。 シート1   A 1   ←全くの未入力の空白セルです 2 3 シート2   A 1   ←未入力で空白セルですが、数式(if関数とISERROR関数)が入っています。 2 3 ここでしたい処理は、二枚のシートをIF関数で調べて正誤チェックをして、相違するセルに×を表示したいです。 ただ、A1セルに  if(シート1A1=シート2A1,"","×")  の数式をいれると、両者は違うセルとして認識してしまいます。 同じ空白セルなのにどうしてでしょうか。 また、この二つのセルはともに空白なので、同じものとして処理する方法はあるのでしょうか。 お願いします。

  • エクセルで入力済みのセルのみ見つけて・・

    エクセルで入力済みのセルだけを見つけ出して、 指定した場所に並べる作業をマクロで1発で出来るようにしたいのですが、その方法を教えてください。 シートが37シートあります。(sheetA1~sheetA12,sheetB1~sheetB12,sheetC1~sheetC12,sheet37) それぞれセルC5からC20まで数値が入っていますが、 最終行はC20とは限りません。(sheet37はまとめるためのシートで空白) C15が最終行の場合もあれば、C18が最終行の場合もあります。 各シートそれぞれ最終行が違います。(列は同じですスタートもC5です) 各シートのC列の入力済みのセルの数値をsheet37のB1セルから順番に縦に並べたいのです。 A,B,Cのシート順にC列に入力された数値を縦に並べます。 空白は無しで詰めて並べます。 これを1回の作業でできるマクロを教えてください。 それから入力済みの最終行を見つけ出すマクロの部分を表示して頂けるとありがたいです。 宜しくお願いします。

  • エクセルで空白セルを寄せたい

    エクセル2002使用です VBAは使わずに関数だけで空白セルがあるセルを詰めて表示したいのですが・・・   A|B|C|D|E|F|G 1 あ い う え お か き 2 ○   ○ ○   ○ の表を   A|B|C|D|E|F|G 1 あ う え か  2 ○ ○ ○ ○ のように表を書き換えたいのです。 1行目には必ず文字が入力されています。 2行目には入力されているセルと空白セルが不定期に入力されています。 2行目のセルが空白ならば、1行目のセルも削除して左へ詰めて 表を転記したいのです。 よろしくお願いします。

専門家に質問してみよう