Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


15228 / 76738 ←次へ | 前へ→

【66991】Re:列と行が一致した所にデータを挿入したい
発言  Hirofumi  - 10/10/24(日) 10:50 -

引用なし
パスワード
   Upしたコードは、元データが多い場合や品目番号の種類が多い場合
結果出力用配列が大きく成る為、元データを1行分づつ読み込んで
リソース優先で処理速度を犠牲にする様に書いて有ります

もし、元データ、品目番号の種類が巨大で無く速度優先にするなら
kanabunさんのコードと同様に、元データを一括して配列に取得し処理します

其の場合は以下の★印を変更して下さい、
kanabunさんのコードと同程度の処理速度に成ると思います
(元のコードの処理時間の7割程度の時間で済むかと思います)

  'Sheet1に就いて
  With rngList
    '行数の取得
    lngRows = .Offset(Rows.Count - .Row, 1).End(xlUp).Row - .Row
    If lngRows <= 0 Then
      strProm = "データが有りません"
      GoTo Wayout
    End If
    '4列分データを配列として取得
    vntData = .Offset(1).Resize(lngRows, 4).Value '★追加
  End With
  
  'Sheet1先頭〜最終迄繰り返し
  For i = 1 To lngRows
    'Sheet1から1行分配列として取得
'    vntData = rngList.Offset(i).Resize(, 4).Value '★削除
    '日付をシリアル値に変換
    vntData(i, 3) = GetDate(vntData(i, 3)) '★1をiに変更
    '日付がSheet2の範囲内で
    If vntMin <= vntData(i, 3) And vntData(i, 3) <= vntMax Then '★1をiに変更
      '品番がSheet2に在るなら
      If dicIndex.Exists(vntData(i, 2)) Then '★1をiに変更
        '個数を出力用配列に加算
        vntResult(dicIndex.Item(vntData(i, 2)), vntData(i, 3)) _
            = vntResult(dicIndex.Item(vntData(i, 2)), vntData(i, 3)) + vntData(i, 4) '★1をiに変更
      End If
    End If
  Next i
0 hits

【66968】列と行が一致した所にデータを挿入したい ひぃちゃん 10/10/21(木) 21:58 質問
【66970】Re:列と行が一致した所にデータを挿入したい Hirofumi 10/10/21(木) 22:16 発言
【66971】Re:列と行が一致した所にデータを挿入したい ひぃちゃん 10/10/21(木) 22:32 質問
【66973】Re:列と行が一致した所にデータを挿入したい Hirofumi 10/10/22(金) 0:13 回答
【66985】Re:列と行が一致した所にデータを挿入したい ひぃちゃん 10/10/22(金) 22:32 お礼
【66986】Re:列と行が一致した所にデータを挿入したい kanabun 10/10/22(金) 23:21 発言
【66987】Re:列と行が一致した所にデータを挿入したい ひぃちゃん 10/10/23(土) 19:42 お礼
【66991】Re:列と行が一致した所にデータを挿入したい Hirofumi 10/10/24(日) 10:50 発言
【67008】Re:列と行が一致した所にデータを挿入したい ひぃちゃん 10/10/25(月) 20:16 お礼

15228 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free