- ベストアンサー
excelで数字列から4桁ずつ分けて表示させたい
excelを使って次のようなことをしたいのですが、うまくいきません。 あるセルに 0123456789123456 と16桁の数字列を入力すると 別の表の4つのセルにそれぞれ 0123 4567 8912 3456 と表示される。 字数が15桁を超えるとexcelが認識してくれないのでそれにも困っています。 どうすればよいのかご教授よろしくお願いします。。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Sub Macro9() For INP1 = 1 To Cells(Rows.Count, 1).End(xlUp).Row '(1) A = Cells(INP1, 1).Text B = Len(A) RETU = 2 '(2) For INP2 = 1 To B Step 4 C = Mid(A, INP2, 4) Cells(INP1, RETU).NumberFormatLocal = "0000" '(3) Cells(INP1, RETU) = C RETU = RETU + 1 Next INP2 Next INP1 End Sub (注)18桁などの場合も表示されます。(画像の3行目) 値は99ですが0099と表示されます (1) 1行目からデータが入力されているものとしています。 2行目からであれば1To......の1を2に変えて下さい。 (2) 4桁にわけられたものはB列から表示されるようになっています。 RETU = 2 の2はB列の事です。C列であれば3に変えて下さい。 (3) 表示されたものは書式で4桁表示にして数値として扱っています。 文字列にしたいのであれば"0000"を"@"下さい。
その他の回答 (3)
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
「16桁の数字列」が Sheet1 のセル A1 に入力されているとき、別の Sheet の任意のセルに、 式 =MID(Sheet1!A$1,1+(ROW(A1)-1)*4,4) を入力して、此れを下方にドラッグ&ペースト または 式 =MID(Sheet1!$A1,1+(COLUMN(A1)-1)*4,4) を入力して、此れを右方にドラッグ&ペースト
- neKo_deux
- ベストアンサー率44% (5541/12319)
> 字数が15桁を超えるとexcelが認識してくれないので 数値のままですと、15桁しか扱えません。 アポストロフィ(')を付ける、セルの書式を変更するなどして文字列として処理するのが妥当です。 そのまま計算には使えなくなるので、VALUE関数なんかで再度数値化する必要がありますが。 -- > あるセルに > 0123456789123456 > と16桁の数字列を入力すると A1に入力したとして、 B列に、 1 2 3 4 … と連番を入力しておき、 C列に、 C1=MID($A$1, (B1-1)*4+1, 4) C2=MID($A$1, (B2-1)*4+1, 4) … なんかの式で抽出とか。