プロが教える店舗&オフィスのセキュリティ対策術

次のエクセルのデータを

  番号  金額
              ← 空白行が入ります。
  1001 300
              ← 空白行が入ります。
  1002 400
              ← 空白行が入ります。
  1005 800
              ← 空白行が入ります。
  1013  1200

下記のように固定長のデータに変換したいのですが

2 00000300 0010010001
2 00000400 0010020002
2 00000800 0010050003
2 00001200 0010130004

「2」(固定)、「 」(スペース5個))、金額(8桁)、「」(スペース1個)、番号(6桁)、連番(4桁)


どのようにしたらいいのでしょうか?
VBを使えばいいとは思うのですが、よくわかりません。

A 回答 (3件)

結果をどう保存しますか?「シート上」それとも「ファイル」のどちらでしょう?




シート上に結果を得るなら

1.ソートして空白行を取り除く。
2.値を編集する。

  番号は列A、金額が列Bとして、列Cに答えを書くとしましょう。
  セルA2からデータがあるとして、セルC2に次の式を設定。
  =TEXT(A3,"2 00000000")&TEXT(B3," 000000")&TEXT(ROW()-1,"0000")
    • good
    • 0

旧DOS時代からあってVBにもエクセルVBAにもあるようですが、Lset、Rset(LはLeft,RはRightの意味)というStatementがあるので、これが使えるのではないでしょうか


。文字列変数の値を右(左)詰にするものです。
Sub test01()
Dim b As String
b = String(10, " ")
a = 1234
RSet b = a
MsgBox b
Cells(1, 1) = "'" & b
End Sub
これを実行してみると、左に6桁のスペースがセットされることがわかります。この方法で作った列ごとの文字列を繋げて、1行分をPrint#文で書き出す。
    • good
    • 0

番号がA列、金額がB列と仮定して


C列に

="2_" & RIGHT("00000000" & B1,8) & "_____" & RIGHT("000000" & A1,6) & RIGHT("0000" & ROW(A1),4)

を入れるとか。(_ はスペースを表す)
    • good
    • 0

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