Excel - ماكرو واحد لمهام الصف متعددة
- القضية
- حل
- ملحوظة
القضية
لديّ كتابان منفصلان أحتاج إلى مقارنتهما. المهمة في متناول اليد هي أنني يجب أن أجد نصًا محددًا في المصنف 2 (col A) ثم وجدت مرة واحدة - ثم يتعين علي نسخ الخليتين / الصفحتين التاليتين (col B و C) ولصقه في wkbook 1 (col B و C) لكل صف فردي للنص الموجود. تلك التي لم يتم العثور عليها ، يمكن أن تترك وحدها أو فارغة.
حل
يمكنك استخدام هذا:
Dim mySearchText As String Dim wb1، wb2 as Workbook Dim sh1، sh2 As Sheets Set wb1 = Workbooks ("Book1") Set wb2 = Workbooks ("Book2") Do While True mySearchText = InputBox ("Enter Text to Search For. Enter blank to لإنهاء العملية. "،" Search for ") إذا (mySearchText =" ") ، ثم إنهاء Sub wb2.Activate wb2BRow = خلايا (65536 ، 2). End (xlUp) .Row wb2CRow = خلايا (65536 ، 3). End xlUp) .Row If (wb2BRow> wb2CRow) ثم wb2row = wb2BRow Else wb2row = wb2CRow End If If wb2row = 1 ثم wb2row = 2 wb1.Activate On Error استئناف التالي إذا ActiveSheet.AutoFilterMode ثم Cells.Select Selection If If .AutoFilterMode = False ثم Rows (1). حدد التحديد. EndFilter End If On Error GoTo 0 Selection.AutoFilter Field: = 1، Criteria1: = "=" & mySearchText، Operator: = xlAnd dim lastRow As Long lastRow = Cells (65536) ، 1). End (xlUp) .Row If (lastRow> 1) ثم النطاق (الخلايا (2 ، 2) ، الخلايا (lastRow ، 3)). حدد Selection.Copy wb2.Activate Cells (wb2row ، 2). تحديد التحديد .PasteSpecial wb2BRow = خلايا (65536 ، 2) (xlUp) .Row wb2CRow = الخلايا (65536 ، 3). End (xlUp) .Row If (wb2BRow> wb2CRow) ثم wb2row = wb2BRow Else wb2row = wb2CRow End إذا wb2row = wb2row + 1 End If Loop
ملحوظة
بفضل rizvisa1 لهذه النصيحة في المنتدى.