Я создал скрипт, который сравнивает столбцы в двух разных листах с sse, если одни и те же значения найдены в обоих документах.Вставка формулы через VBA со ссылкой на другой лист не работает. Нужно обходное решение
Я делаю это, вставляя формулу через VBA в один из двух документов.
формула: =IF(ISNA(MATCH(A1;'[Filename]SheetName'!$B:$B;0));"NO MATCH","MATCH")
Проблема заключается в том, что если SheetName
является ничем иным, кроме Sheet(insert number here)
скрипт не работает. Я не знаю, почему он не узнает лист, но мне нужно обходное решение для этого.
VBA сценария:
Formula1 = "=IF(ISNA(MATCH(" & Chr(col1 + 64) & MyCell1 & ",'[" & fi2 & "]" & SheetName & "'!$" & Chr(col3 + 64) & ":$" & Chr(col3 + 64) & ",0)),""NO MATCH"",""MATCH"")"
Formula2 = "=IF(" & Chr(col1 + 65) & MyCell1 & "=""NO MATCH"",""-"",IF(INDEX('[" & fi2 & "]" & SheetName & "'!$" & Chr(col4 + 64) & ":$" & Chr(col4 + 64) & ",MATCH(" & Chr(col1 + 64) & MyCell1 & ",'[" & fi2 & "]" & SheetName & "'!$" & Chr(col3 + 64) & ":$" & Chr(col3 + 64) & ",0))=" & Chr(col21 + 63) & MyCell1 & ",""MATCH"",""NO MATCH""))"
With Range(myRange1)
.NumberFormat = "General"
.Value = Formula1
.Value = .Value
.HorizontalAlignment = xlCenter
.ColumnWidth = 27
End With
With Range(myRange2)
.NumberFormat = "General"
.Value = Formula2
.Value = .Value
.HorizontalAlignment = xlCenter
.ColumnWidth = 27
End With
Код выглядит нормально для меня, кроме того, что иногда вы добавляете 65 к номеру столбца, иногда 64 или 63 (вы можете найти ссылки R1C1 проще). Что на самом деле происходит с другими именами листов? – Rory
Не могли бы вы объяснить, к чему относятся некоторые из переменных, которые вы используете? (т. е. 'fi2') – RGA
Перед тем, как использовать vba, вы должны проверить свои функции в ячейке, чтобы убедиться, что они действительно работают. – phil652