[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『項目・データ数の多い固定長テキストデータに簡単に区切りをつけたい』(アイポン)
項目数が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.