「お昼の放送」の思い出

excelを使って次のようなことをしたいのですが、うまくいきません。

あるセルに
0123456789123456
と16桁の数字列を入力すると
別の表の4つのセルにそれぞれ
0123 4567 8912 3456
と表示される。

字数が15桁を超えるとexcelが認識してくれないのでそれにも困っています。
どうすればよいのかご教授よろしくお願いします。。

A 回答 (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"を"@"下さい。
「excelで数字列から4桁ずつ分けて表示」の回答画像4
    • good
    • 0

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] で確定({}で囲まれる)
「excelで数字列から4桁ずつ分けて表示」の回答画像3
    • good
    • 2

「16桁の数字列」が Sheet1 のセル A1 に入力されているとき、別の Sheet の任意のセルに、


式 =MID(Sheet1!A$1,1+(ROW(A1)-1)*4,4) を入力して、此れを下方にドラッグ&ペースト
または
式 =MID(Sheet1!$A1,1+(COLUMN(A1)-1)*4,4) を入力して、此れを右方にドラッグ&ペースト
    • good
    • 0

> 字数が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)

なんかの式で抽出とか。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報