89886


VBAでデータの整形、整理を行っていますが、  
とにかく処理が遅くて困っております。

調べたところ、セルに直接書き込む処理を減らすため  
配列を使い、セルに直接書き込む回数を減らすことで  
速度の改善が可能とのことが分かりました。

そこで、一旦、テキストファイルを読み込んで表示されたセル範囲を  
regionArr = Range("A1").CurrentRegionとし、配列として格納した  
のですが、ここから、それぞれの列に対して、どのように記載をして  
いけばよいのか分かりません。

処理イメージとしては、画像の様になります。  
（自分が書いた、遅い、重いマクロでは実現できています）

[code]

    Sub sample()
        Dim txtPath As String
        Dim regionArr As Variant
         
    'テキスト読み込み処理
        txtPath = "C:\Work\sample.log"
    
        'Textファイル読み込み
        Workbooks.OpenText Filename:=txtPath, _
            DataType:=xlDelimited, Space:=True
        
        'Textを読み込んだ領域を配列として格納
        regionArr = Range("A1").CurrentRegion
        
    
    '読み込んだテキストに対する処理
        Dim lastRow As Long
        
        lastRow = UBound(regionArr)
    
    'A列に対しての処理
    'B列に対しての処理
    'C列に対しての処理など
    
    end sub
    
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/GHidq.png)](https://i.stack.imgur.com/GHidq.png)


CC BY-SA 4.0
2022-07-10T07:35:06.560
89884
2022-07-10T13:28:29.943
2022-07-10T13:28:29.943
4236
question
vba excel
VBA　高速化について


regionArr には範囲のセルの内容が２次元配列として入ります。  
内容を確認してみてください。

[code]

    Dim nRow As Long
    Dim nColumn As Long
    For nRow = LBound(regionArr, 1) To UBound(regionArr, 1)
        For nColumn = LBound(regionArr, 2) To UBound(regionArr, 2)
            Debug.Print nRow, nColumn, regionArr(nRow, nColumn)
        Next
    Next
    
[/code]

その後はデータを加工して２次元配列を作り、範囲指定をして代入します。

[code]

    targetSheet.Range("A2:C13").Value = 加工後の２次元配列
    
[/code]


CC BY-SA 4.0
2022-07-10T08:54:37.573
89886
2022-07-10T09:24:20.370
2022-07-10T09:24:20.370
50741
50741
89884
answer