• ベストアンサー

excelで数字列から4桁ずつ分けて表示させたい

excelを使って次のようなことをしたいのですが、うまくいきません。 あるセルに 0123456789123456 と16桁の数字列を入力すると 別の表の4つのセルにそれぞれ 0123 4567 8912 3456 と表示される。 字数が15桁を超えるとexcelが認識してくれないのでそれにも困っています。 どうすればよいのかご教授よろしくお願いします。。

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

  • ベストアンサー
  • mar00
  • ベストアンサー率36% (158/430)
回答No.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)

回答No.3

A列 16桁限定 A列選択→[Ctrl]+[1]セルの書式設定 表示形式 文字列 にしておく C1セル =LEFT($A1,4) D1セル =MID($A1,5,4) E1セル =MID($A1,9,4) F1セル =RIGHT($A1,4) MID関数で統一するなら C1セル =MID($A1,1,4) D1セル =MID($A1,5,4) E1セル =MID($A1,9,4) F1セル =MID($A1,13,4) さらに配列数式を使うなら C1:F1セルを選択して =MID($A1,{1,5,9,13},4) [Ctrl]+[Shift] +[Enter] で確定({}で囲まれる)

noname#204879
noname#204879
回答No.2

「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)
回答No.1

> 字数が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) … なんかの式で抽出とか。

関連するQ&A

専門家に質問してみよう