|
▼ほびっとさん、awu さん:
こんにちは。
Sub 配列でやってみよう()
Dim intFF As Long
Dim sCon(1 To 15) As Variant
Dim sCbf As Long
Dim Data() As Variant
Dim i As Long
Dim j As Long
intFF = FreeFile
Open ThisWorkbook.Path & "\tmp.csv" For Input As #intFF
i = 0
Do Until EOF(intFF)
Input #intFF, sCon(1), sCon(2), sCon(3), sCon(4), sCon(5), sCon(6), sCon(7), sCon(8), _
sCon(9), sCon(10), sCon(11), sCon(12), sCon(13), sCon(14), sCon(15)
If Not sCbf = sCon(1) Then
'配列にいれてみよう
ReDim Preserve Data(8, i)
For j = 0 To 7
Data(j, i) = sCon(j + 1)
Next
i = i + 1
sCbf = sCon(1)
End If
Loop
Close #intFF
ActiveSheet.Cells(1, 1).Resize(UBound(Data, 2) + 1, 8).Value = Application.Transpose(Data)
ActiveSheet.Cells(1, 1).Resize(UBound(Data, 2) + 1, 8).NumberFormatLocal = "@"
End Sub
やっている事が余り変わりないので、速度は awu さんと同じくらいでしょうか。
>処理をデータベースクエリで行ったら、
>早くなるような気がするのですが、方法が分かりません。
この速度でもまだ遅いと思われるのでしたら、ADO なり DAO で処理も
考えてみようと思いますがいかがでしょうか。
※ もし、使われている元の csv が Ken_ALL でしたら、
テーブルを扱う上では「一番上」という概念がないので
>データが変わる最初の行
という判断は出来ない事になりますね。
(フィールド 3 の値が最小のものをグループ化は可能ですが。)
|
|