[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『項目・データ数の多い固定長テキストデータに簡単に区切りをつけたい』(アイポン)
項目数が20以上、データ数が1000を超える固定長フィールドのデータをエクセルで開く時、項目同士がくっついてしまっていて区切り線を入れることがとても難しいです。
ウィザードウィンドウでは、データフィールドの全部を見ることができないので、入れてはいけないところに区切り線を入れてしまうことも考えられます。
テキストの状態の時にカンマを入れることも考えたのですが、データ数の多さから断念してしまいました。
何かいい方法はないでしょうか。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
ところで、データは全角半角混ざってます? 半角を1、全角を2と数えたい場合、
VBAでは工夫しないといけないので、かなり面倒です。C言語なら簡単なのですが。
あと、改行コードはCRLF? LFのみ?
(???) 2014/12/17(水) 17:21
(アイポン) 2014/12/17(水) 17:33
Sub test()
Dim F1 As Integer
Dim vT As Variant
Dim cBuf As String
Dim cw() As String
Dim i As Long
Dim iR As Long
Dim iSt As Long
vT = Array(3, 8, 3, 8)
ReDim cw(UBound(vT))
F1 = FreeFile
Open "C:\test\data.txt" For Input As #F1
While EOF(F1) = False
Line Input #1, cBuf
cBuf = StrConv(cBuf, vbFromUnicode)
iSt = 1
For i = 0 To UBound(vT)
cw(i) = StrConv(MidB(cBuf, iSt, vT(i)), vbUnicode)
iSt = iSt + vT(i)
Next i
iR = iR + 1
Cells(iR, "A").Resize(, UBound(vT) + 1) = cw
Wend
Close #F1
End Sub
(???) 2014/12/17(水) 17:51
基本的にはマクロ派なんですけど、テキストウィザードで取込めるデータなら
数式でも出来ると思いますよ。
A B C D E 〜
1行目には項目開始位置 1 4 13 15
2行目には文字数算出関数 =C1-B1 B2を右方にフィルコピー
3行目からはデータと数式 =MID($A3,B$1,B$2) B3を右方、下方にフィルコピー
テキストウィザードでセルA3にデータ取込み。
改行コードの無い固定長データとかだと厳しいですけど。
(ウッシ) 2014/12/18(木) 07:54
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.