• 締切済み

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

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

みんなの回答

  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.8

例でいうと、1の位を5行目に揃えたいということでしょうか。 数字がセルA1にあって、1の位を10行目に揃える場合の例ですが、 =IF(LEN($A$1)<10-ROW(A1),"",LEFT(RIGHT("\"&$A$1,10-ROW(A1)+1),1)) を任意のセルに入れて、下へオートフィルでいかがでしょう。ご質問例のように5行目で揃えたい場合は、数式中に二つある10を5に変えてください。

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

これぐらい複雑になるとVBAをお勧めします。 A列に数字が入っているとして Sub test01() For i = 1 To 10 n = Cells(i, "A") p = 13 For j = Len(n) To 1 Step -1 Cells(i, p) = Mid(n, j, 1) p = p - 1 If j = 1 Then GoTo p01 If p = 10 Or p = 6 Or p = 2 Then Cells(i, p) = "," p = p - 1 End If p01: Next j Cells(i, p) = "\" Next i End Sub を実行して見てください。 For i = 1 To 10 は10行分の場合です。10を最下行を自動で捉える方法がありますがあえて省略。 B列からM列までに、M列に揃えて、右詰め的に¥とカンマと数字が入ります。 下記はテストデータが4行ですのでFor i = 1 To 4として 実行。 (実例)A列は書式によって¥1,234のように見えているものとします。 123 \ 1 2 3 1234 \ 1 , 2 3 4 123455 \ 1 2 3 , 4 5 5 123456789 \ 1 2 3 , 4 5 6 , 7 8 9

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.6

B1に\15,214は文字列ではなくて、15214という数値が入っていて表示形式で通過に変更してあるものとして考えます。 A1 =IF($B$1<>"","\","") A2以降の下に必要なだけコピペしてください。 =MID($B$1,ROW()-1,1) で如何ですか?

noname#9284
noname#9284
回答No.5

ANo.#2の補足です。 先ほどの数式は桁数を気にすることはありません。 最大桁より少し多い目の行数分、下にコピーして下さい。 桁が変わればそれに対応しますので。 そして小数やマイナス値がありましたら再度書き込んでください。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

   A  B 1  \  \12,345 2  1 3  2 4  3 5  4 6  5 B1に『12345』が入力されているとします。(『\ ,』は書式とします) 『どうも桁がずれたり・・・』とあるので、¥と1~5桁目は固定しています。下記は最大5桁の例です。 A1 =MID("\" & RIGHT(REPT(" ",5)&$B$1,5),1,1) A2 =MID("\" & RIGHT(REPT(" ",5)&$B$1,5),2,1) A3 =MID("\" & RIGHT(REPT(" ",5)&$B$1,5),3,1) A4 =MID("\" & RIGHT(REPT(" ",5)&$B$1,5),4,1) A5 =MID("\" & RIGHT(REPT(" ",5)&$B$1,5),5,1) A6 =MID("\" & RIGHT(REPT(" ",5)&$B$1,5),6,1) A1の式をコピーして一部を変更します。 なお、分解した文字を全角で表示する場合は、上記式をjis( )で囲みます。  =JIS(MID("\" & RIGHT(REPT(" ",5)&$B$1,5),1,1))

noname#148473
noname#148473
回答No.3

#1の方と、考え方は同じなのですが・・・ 元の数値がセルB1に入っているとします。 A1に次の数式を入力してください。 =IF(ROW()>LEN($B$1),"",MOD(INT($B$1/10^(LEN($B$1)-ROW())),10)) 次に、A1をコピーしてA2以降のセルに必要桁数だけ貼り付けてください。 しかし、うちだとMID関数でもちゃんとできるんですけど、妙ですね。

noname#9284
noname#9284
回答No.2

B1に数字、でしたらA1に =IF(ISERROR(MID(B$1,ROW(),1)),"",MID(B$1,ROW(),1)) で、下までコピーしてください。 ¥マークをつけるとはどこにどう付けますか? 数式で? 書式で? そもそもB1には15214と入力されているのですか? そして書式で¥がつけられているのでしたら同じようにA1:A5の書式もそうしてください。

  • baihu
  • ベストアンサー率31% (114/357)
回答No.1

剰余(割り算の余り)を使えばよいと思います。 例えば、X1に数字が入っているとしたら、以下のようになります。 A5(一の位):=mod(X1,10) A4(十の位):=mod(int(X1/10),10) …… A1(万の位):=mod(int(X1/10000),10) mod(n,m)はnをmで割った余り、int(n)はnの整数部分(小数第一位以下を切り捨て)です。 また、¥マークは、書式設定の「表示形式」から選びます。