|    | 
     いつもお世話になってます。 
下記プログラムを書きましたが、処理に時間がかかってしまいます。 
データは15,000行程ですがファイルによってバラバラです。 
効率のいい方法をご教授ください。 
データはP列で昇順に並んでいます。 
 
 
Sub 品番抽出プログラム() 
 
 Dim BOOKNAME As String  '元ファイル名 
 Dim DISTINATION As String '変更ファイル名 
 Dim MAIN As String    'アクティブシート名 
 Dim KITEN As Range    '原点 
 Dim C As Integer     '表MAIN最終行 
 Dim HINBAN As String   '品番名 
 Dim A As Integer     'カウンタ 
 Dim B As Integer     'サブカウンタ 
 Dim FLAG As String 
 
 'ファイルを開く 
  BOOKNAME = Application.GetOpenFilename(MultiSelect:=False) 
  Workbooks.Open Filename:=BOOKNAME 
 
  BOOKNAME = Right(BOOKNAME, 16) 
  Workbooks(BOOKNAME).Activate 
 
 
 'シート名確保 
  MAIN = Left(BOOKNAME, 12) 
 
  'アクティブシート名取得 
  Workbooks(BOOKNAME).Activate 
  Set KITEN = Worksheets(MAIN).Range("A1") 
  C = KITEN.CurrentRegion.Rows.Count    '最終行取得 
 
  A = 2 
   
  Do While Len(Cells(A, 6)) > 0  'セルの文字数0ならば 
   A = A + 1 
   B = A - 1 
 
   Sheets(MAIN).Select 
   FLAG = StrComp(Cells(A, 6), Cells(B, 6), vbTextCompare) 
    
   If FLAG = 0 Then '一致していれば 
   'Worksheets(MAIN).Cells(B, 14).Value = Worksheets(MAIN).Cells(B, 14).Value + Worksheets(MAIN).Cells(A, 14).Value 
   Worksheets(MAIN).Cells(B, 15).Value = Worksheets(MAIN).Cells(B, 15).Value + Worksheets(MAIN).Cells(A, 15).Value 
   Worksheets(MAIN).Cells(B, 16).Value = Worksheets(MAIN).Cells(B, 16).Value + Worksheets(MAIN).Cells(A, 16).Value 
   Worksheets(MAIN).Cells(B, 17).Value = Worksheets(MAIN).Cells(B, 17).Value + Worksheets(MAIN).Cells(A, 17).Value 
   Worksheets(MAIN).Cells(B, 18).Value = Worksheets(MAIN).Cells(B, 18).Value + Worksheets(MAIN).Cells(A, 18).Value 
   Worksheets(MAIN).Cells(B, 19).Value = Worksheets(MAIN).Cells(B, 19).Value + Worksheets(MAIN).Cells(A, 19).Value 
   Worksheets(MAIN).Cells(B, 20).Value = Worksheets(MAIN).Cells(B, 20).Value + Worksheets(MAIN).Cells(A, 20).Value 
   Sheets(MAIN).Select   '該当行のカット 
   Range(Cells(A, 2), Cells(A, 4)).EntireRow.Delete 
   A = A - 1 
    
   Else 
       
 
   End If 
 
  Loop 
 
End Sub 
 
 | 
     
    
   |