Я хотел бы использовать формулу r1c1 для поиска значений в столбце AF из текущей рабочей книги (cbook) и сравнить их со значениями в предыдущей рабочей книге (pbook).Я использую r1c1, потому что это быстрее, но я открыт для других методов.
Я хотел бы скопировать значения из столбцов AG, AH, AI и AJ.Я провел исследование, чтобы создать правильный код, но боролся с диапазоном и адресом (Srng.Address), а также добавил имя листа в переменную.
Srng - это путь и имя файла предыдущей книги, но .Address дает ячейку, в которой находится переменная.(У меня есть переменная книга (InstVariable), и ячейка находится в C28, но мне нужно строковое значение).Я пытался со многими неудачными попытками определить Srang, который является путем с именем Рабочего листа предыдущей рабочей книги.Рабочий лист должен быть именем текущей рабочей книги.
Вот часть моего кода ниже.Любая помощь приветствуется!
'Current List Template
Dim cbook As Workbook
Set cbook = ActiveWorkbook
'Prior List Template
Dim pbook As Workbook
'Workbook
' Set pbook = Workbooks.Open(JRDCPriorNoBrk)
cbook.Activate
'********************
'Turns off screen updates (no flashes)
'********************
With Application
'.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
'Make sure user is on JobReq & DataChg INST tab to run macro
Sheets("JobReq & DataChg INST").Activate
'unshare the workbook to run macro
'ActiveWorkbook.SaveAs ActiveWorkbook.FullName, accessmode:=xlExclusive
Application.DisplayAlerts = False
' ActiveWorkbook.ExclusiveAccess
For Each xworksheet In ActiveWorkbook.Worksheets
xworksheet.Activate
If ActiveSheet.Name = "Original" Or ActiveSheet.Name = "JobReq & DataChg INST" Then GoTo NotThisSheet
'unprotects sheets so user can run macro
ActiveSheet.Unprotect
'ActiveSheet.Range("AG2").Select
Dim Srng As Range
Dim LastRow As Long
'Set Srng = Worksheets("Coniguration").Range("_Configuration")
'Set Srng = ActiveSheet.Range("AF2:AJ18")
'pbook.Worksheet (cbook.ActiveSheet.Name)
'LastRowp = .Cells(.Rows.Count, "AF").End(xlUp).Row
'Set Srng = pbook.Worksheet(ActiveSheet.Name)
'Set Srng = PathJRDCPrior.ActiveSheet.Range("AF2:AJ" & LastRowp)
With ActiveSheet
'With pbook.Worksheets(cbook.ActiveSheet.Name)
'With Worksheets(" & PathJRDCPrior & ")
'current worksheet last row
LastRow = .Cells(.Rows.Count, "AF").End(xlUp).Row
'prior worksheet last row
'MsgBox (cbook.ActiveSheet.Name)
With pbook.Worksheets(cbook.ActiveSheet.Name)
'pbook.Worksheets (cbook.ActiveSheet.Name)
LastRowp = .Cells(.Rows.Count, "AF").End(xlUp).Row
SSheet = cbook.ActiveSheet.Name
Set SPath = PathJRDCPrior
'Set Srng = PathJRDCPrior.ActiveSheet.Range("AF2:AJ" & LastRowp)
'Srng = pbook.Worksheets(cbook.ActiveSheet.Name).Range("AF2:AJ" & LastRowp)
Set Srng = Worksheets(SSheet).Range("AF2:AJ" & LastRowp)
End With
' MsgBox (Srng)
With cbook.ActiveSheet.Range("AG2:AG" & LastRow)
With cbook.ActiveSheet.Range("AG2:AG" & LastRow)
**.FormulaR1C1 = "=VLOOKUP(RC32," & Srng.Address(, , xlR1C1, True) & ", 2, 0)"**
.Value = .Value
End With
With cbook.ActiveSheet.Range("AH2:AH" & LastRow)
.FormulaR1C1 = "=VLOOKUP(RC32," & Srng.Address(, , xlR1C1, True) & ", 3, 0)"
.Value = .Value
End With
With cbook.ActiveSheet.Range("AI2:AI" & LastRow)
.FormulaR1C1 = "=VLOOKUP(RC32," & Srng.Address(, , xlR1C1, True) & ", 4, 0)"
.Value = .Value
End With
With cbook.ActiveSheet.Range("AJ2:AJ" & LastRow)
.FormulaR1C1 = "=VLOOKUP(RC32," & Srng.Address(, , xlR1C1, True) & ", 5, 0)"
.Value = .Value
End With
End With
NotThisSheet:
Next xworksheet
'share workbook
ActiveWorkbook.SaveAs ActiveWorkbook.FullName, accessmode:=xlShared
Application.DisplayAlerts = True
MsgBox ("Copying from the prior list is complete.")
End Sub