• ベストアンサー

MID関数について

一桁から八桁までの任意の数字を1セルごとに分けたいのですが、MID関数では左から取り出すため桁数が変化すると使えません。 一桁目にMID(A1,1,1)から八桁目にMID(A1、8,1)を入れると1234が4321と逆になってしまいます。 12でも12345678と桁が違っても1セルごとにわけることはできないでしょうか

  • yan1
  • お礼率41% (15/36)

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

  • ベストアンサー
  • don9don9
  • ベストアンサー率47% (299/624)
回答No.6

No.3です。 私はNo.3で、A1セルに入力されている数値を一桁ずつ区切って 8つの横並びのセルに右詰めで入れる方法を回答したつもりです。 これがA1セルではなく、別シートの特定のセル(計算書!R20)であるならば No.3の回答の「$A1」の部分を「計算書!$R$20」に変えればいいだけです。 (ただし「COLUMN(A1)」の部分は変えないで下さい) この説明でご理解いただけない場合に備えて、念のためもう一度書きます。 収入金額欄の、千万の位の数字を表示したいセルに =IF(計算書!$R$20>=10^(8-COLUMN(A1)),MID(TEXT(計算書!$R$20,"00000000"),COLUMN(A1),1),"") と入力し、これを右方向に一の位を表示したいセルまでコピーします。 もし金額が0の場合に、一の位だけ"0"と表示したい場合は 一の位を表示したいセルの式だけを =RIGHT(計算書!$R$20,1) に変更してください。

yan1
質問者

お礼

1から9千万まで自由に表示させることができました。とても便利な機能になりますのでありがとうございました。 (A1)を(R20)としていましたので表示できませんでした。

その他の回答 (5)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.2です。 No.3さんの補足を読ませていただいて・・・ 表示したいセルに =IF(LEN(計算書!$R$20)<COLUMN(A1),"",MID(計算書!$R$20,COLUMN(A1),1)*1) という数式を入れ、列(右)方向にオートフィルで8列コピーではどうでしょうか? 尚、数式内の最後の部分「*1」は単に数値化するためです。m(__)m

yan1
質問者

お礼

再度の回答ありがとうございます。皆様の御蔭で無事解決いたしました。左詰めで表示されました

  • layy
  • ベストアンサー率23% (292/1222)
回答No.4

一次的に 12を00000012 1234を00001234 12345678を12345678 にすれば すべて8桁の認識なので MID関数での悩みは消える。 前に0をつけたがやるなら半角スペースだろう。

yan1
質問者

お礼

皆様の御蔭で無事解決いたしました。 ありがとうございました。

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.3

私は先のお二方と違って、左詰めではなく右詰め、つまり 数値の桁の位置を揃えたいのかな?と解釈しましたので 別の方法を紹介します。 見当はずれでしたら読み飛ばしてください。 千万の位のセルに =IF($A1>=10^(8-COLUMN(A1)),MID(TEXT($A1,"00000000"),COLUMN(A1),1),"") と入力して、右方向に一の位のセルまでコピーします。 もし、数値が0の場合に一の位だけ"0"を表示したい場合は 一の位の式だけ =RIGHT($A1,1) に変更します。 ※9桁(1億)以上の数値が入力された場合は結果がおかしくなりますのでご注意を。

yan1
質問者

補足

右詰で正解ですが、エクセルで作った確定申告書の収入金額欄に別シート(計算書!R20)のデータを表示させたいのです

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 一例です。 ↓の画像でB1セルに =IF(LEN($A1)<COLUMN(A1),"",LEFT(RIGHT($A1,LEN($A1)-COLUMN(A1)+1),1)) という数式を入れ、列方向と行方向にオートフィルでコピーしています。 こんな感じで良いのでしょうか?m(__)m

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 任意セルに=IF(LEN($A$1)>=COLUMN(A1),MID($A$1,COLUMN(A1),1),"")を入力、右方向にコピー 下方向ならCOLUMNをROWに変えて下さい。

yan1
質問者

お礼

右詰で表示させるということが抜けてしまいましたが、皆様の御蔭で無事解決いたしました。 ありがとうございました。

関連するQ&A

  • EXCEL MID関数の文字数について!

    セルA1 12×1240×2280 セルA2 3×1240×2280 セルA3 5.5×1240×2280 ↑こんな風にセルの中に数字が入っているのでMID関数で セルA1 =MID(A1,1,2)→12 セルA2 =MID(A2,1,1)→3 セルA3 =MID(A3,1,3)→5.5 と答えが出ます。でもA列の桁数によりMID関数の文字数を変えなければなりません。 一気に出せる方法はないでしょうか?? おわかりの方教えてくださーい!

  • MID関数について

    先ほど質問した内容の応用編なのですが・・・・ 一つのセルにMID関数を何個か入れる事は出来るのでしょうか? なおかつ半角の-を間に入れたいのですがどのようにすれば宜しいのでしょうか? 次の様にしたいのですが・・・・ (MID関数で持ってきた数字*-MID関数で持ってきた数字*-MID関数で持ってきた数字*) (*-*-*) ってな風にです もう一個、MID関数とは関係無いとは思いますが・・・ 0401 とMID関数でもって来た数字を 4/1と表示させる事は出来ないでしょうか? 仕事上どうしてもやらなければいけないので質問しまくっています 質問の内容もわかりにくいかも知れませんが・・・・ どうぞ 回答宜しくお願い致しますm(__)m

  • エクセル MID関数

    MID関数で表示した文字列が、数字として認識されません。 MID関数で表示された数字が10とします。セルはA1とします。 その後、IF式で =if(A1<5,10,0) とすると、結果は0になるはずなのに、常に真の値、10になってしまいます。 原因は、MID関数で表示された数字が文字列として認識しているからと考えられますが、対象方法をご存知の方がおりましたら教えてください。 よろしくお願いします。

  • エクセル関数を教えてください

    以前こちらで回答を頂き、活用させていただいてます。 今回の質問についてもおねがいします。  ※今回の質問 セル内の4桁の数字(1から0までの数字を使用した4桁;例えば1249)を、別のセル内に、関数(1234567890をそれぞれ2458761390へ変換する関数)で変換された4桁(例えば2489)で表示したいのですがその際に使用する関数を教えてください。参考に前回の質問と回答を参照します。 よろしくお願いします。 ※前回の質問 セル内の3桁の数字(1から8までの数字を使用した3桁;例えば124)を、別のセル内に、関数(12345678をそれぞれ24587613へ変換する関数)で変換された3桁(例えば248)で表示したいのですが、その際に使用する関数を教えてください。エクセル上に表示する数字は1から8までのうちの3桁で、12345678をそれぞれ24587613へ変換したいです。 ※回答 =SUM(FIND(MID(A1,{1,2,3},1),71823654)*10^{2,1,0}) =SUM(MID("24587613",MID(A1,{1,2,3},1)*1,1)*10^{2,1,0})

  • エクセルの数式について

    A1のセル:214547-855-49 A2のセル:21459-2-58 A3のセル:2145778-37-1 というように、数字が入っており、桁数も違うのですが、左から-が二つ目以降の数字だけを取り出したいのですが、一桁のときは、RIGHT関数だと‐が入ってしまったりします。 いい関数などを教えていただけるとうれしいです。

  • EXCEL 数字の切り出し方法

    こんばんは。 各行に数字が入力されています。 桁数は6桁、5桁、4桁とマチマチです。 この各数字の右から4つめから左方向の 数字を抜き出したいのですが、できますでしょうか? ちなみに、LEFT関数は左から右へmid関数は、 左から指定の桁数からの抜き出しのようです。 ぜひ、教えてください。 (例)25467・・・25を抜き出したい     7683・・・7 7476876・・・7476 というかんじです。

  • EXCEL 2010 VBAまたは関数について

    こんにちは 初投稿です。 早速ですが、VBAまたは関数について質問させて頂きたいのですが・・・ 一つのセルに複数の数字と文字列がセルのE1混ざっている場合, (12345abc678cdef9ghijk)と入っている場合 にこの例で行くとセルのA1に12345セルB1に678セルC1に9というように数字で表示させたいのです が、最初関数で A1=VALUE(MID(E1,1,5)) B1=VALUE(MID(E1,9,3)) C1=VALUE(MID(E1,16,1)) と言う形で数字だけ抜き出していたのですが これだと数字の桁数が違ってくる(※正し文字列の長さは一緒 数字だけが桁が違ってきます) と表示されなくなってしまうため、 出来れば関数をいじらなくても表示されるようにしたいのです。 VBAもしくは関数でこの問題を解決出来る方がいらっしゃるなら どうぞよろしくお願い致します。 長文失礼致しました。 | A | B | C | D | E | ------------------------------------------------ 1 | 12345 | 678 | 9 | | 12345abc678cdef9ghijk | 2 | | | | | |

  • =mid

    元帳の、あるセルの数字、12,345を =mid(c3,1,6) と入力してそのセルの数字は、別のエクセルの表のセルに入力されるのですが 。12345と入力され、12,345とカンマが入力されません 関数を入力していない所は、カンマが入るのですが。 どうにかなりませんでしょうか? 教えてください。 もう一つ、A3、A4,A5の数字を、 A1のセルに合計を出すため、 =sum(A3.A5) と関数を入れても合計が出ません。 初心者のため、出来るだけ詳しく教えてください。 お願いします。

  • エクセル文字列の関数について

    エクセルで、例えば、¥15,214みたいな一つのセルに入っている数字があるとします。その数字を一つ一つのセルに A1 1 A2 5 A3 2 A4 1 A5 4 と5桁の分ける場合、どうすればよいのでしょう? MID、RIGHT関数、と試してみましたが、どうも桁がずれたり、分かりません。 ちなみに数字の桁は変更がありますので、5桁の場合もあるし、3桁の場合もあります。あと、¥マークも付けたいと思っています。教えてください。

  • ExcelのMID,COLUMN関数について

    ExcelのMID,COLUMN関数について http://okwave.jp/qa/q6113613.html 以前こういう質問をして、 No.5の回答で教えてもらった関数を埋め込んでアンケートの入力をしています。 B列に数字50桁を入れて、C列に関数を入れてという感じです。 B2に数字50桁を入力してEnterを押すとC2からAY2までに1桁ずつ振り分けられるのですが B2の数字50桁はそのままです。 これは関数として、これはしょうがないそうなので 納得はしたのですが B2は実は問1を入力するセルだったんです。 なので、全部アンケートを入力し終わった後、B2を1桁に戻そうと思ったのですが そうすると、関数が効いているのでB2を1桁にするとC2からAY2まで入力されていた数字が消えてしまいます。 これはどうすればいいのでしょうか? 最終的なアンケートの入力データとして、50桁入っているセルは必要ありません(邪魔になってしまいます) なので、今B列の左隣に1列追加して これまでB列だったものがC列になったのですが この場合、B列に51桁を入れて(1桁目はブランクとして、2桁目からアンケートのデータ50桁を入れる) C列に関数を入れて、(C列が問1の回答を入力する) そうすると、1桁目をブランクにすることにより、 50桁入力したB列を直すことなくアンケートデータが完成します。 この場合入力し終わった後50桁入力しているB列を消しても C列以降の数字が消えることはありませんか? それとも消えてしまうのでしょうか? どうすればいいでしょうか?

専門家に質問してみよう