У меня есть рабочая книга с несколькими листами, и новые листы будут регулярно добавляться в формате [мммм гг]. На моем главном листе («ContactList») у меня есть формула IF с «вложенной» формулой VLOOKUP в трех столбцах, чтобы извлечь соответствующие числа из соответствующего листа, и у меня есть ячейка с датой в желаемом формате. Я хочу, чтобы мой скрипт смотрел на ячейку с датой в ней и использовал значение этой ячейки, чтобы обновить столбцы формул VLOOKUP, чтобы они соответствовали этому. Например, в феврале ячейка на моем главном листе будет отображать «20 февраля», поэтому мои формулы VLOOKUP будут выглядеть на листе с заголовком «20 февраля». В марте эта ячейка будет обновлена, и я хочу, чтобы мой сценарий (желательно автоматически, но с кнопкой был в порядке) обновил все функции VLOOKUP, которые теперь отображаются на листе «20 марта».
Мне кажется, что я пробовал миллион вещей и постоянно получаю разные ошибки, но сейчас я просто застрял. Моя последняя попытка состояла в том, чтобы установить части формулы как переменные, а затем задать другие переменные, чтобы эти части были проанализированы вместе.
Sub Update_Counts()
Dim rng As Range
Dim cellnum As Integer
Dim curr As Object
Dim v1 As String, v2 As String, v3 As String, v4 As String, v5a As String, v5b As String, v5c As String
Dim v6a As String, v6b As String, v6c As String, strFormC As String, strFormMR As String, strFormMD As String
v1 = "=IF(VLOOKUP("
v2 = Cells(cell.Row, "A")
v3 = ",'"
v4 = Cells(1, 6).Value
v5a = "'!B7:F50, 2, FALSE) = 0, 'EMPTY', VLOOKUP("
v5b = "'!B7:F50, 3, FALSE) = 0, 'EMPTY', VLOOKUP("
v5c = "'!B7:F50, 4, FALSE) = 0, 'EMPTY', VLOOKUP("
v6a = "'!B7:F50, 2, FALSE))"
v6b = "'!B7:F50, 3, FALSE))"
v6c = "'!B7:F50, 4, FALSE))"
strFormC = v1 & v2 & v3 & v4 & v5a & v2 & v3 & v4 & v6a
strFormMR = v1 & v2 & v3 & v4 & v5b & v2 & v3 & v4 & v6b
strFormMD = v1 & v2 & v3 & v4 & v5c & v2 & v3 & v4 & v6c
Set curr = Worksheets("ContactList").Cells(cellnum, 6)
Set rng = Sheets("ContactList").Range("F3:H55")
For cellnum = 3 To 55
If Cells(2, 6).Value = "Commercial Total" Then
curr.Value = strFormC
ElseIf Cells(2, 7).Value = "Medicare" Then
curr.Value = strFormMR
ElseIf Cells(2, 8).Value = "Medicaid" Then
curr.Value = strFormMD
End If
Next cellnum
End Sub
Это то, что я имею до сих пор. В настоящее время я получаю «Ошибка времени выполнения 424; Требуется объект». Я думал, что наличие curr
в качестве объекта позволит мне пройти через него, но я думаю, что мое значение cellnum
является частью «необходимо быть объектом» оператора For
. Однако я не уверен, как получить значения ячеек там без того, как это настроено. Я попробовал «Для каждого» * 1010 *, но у меня там тоже было множество проблем. Я не смог найти ни одного примера людей, желающих обновить формулы своих ячеек, включая значение ячейки, но, возможно, я просто не смотрел в правильном месте. Любой совет очень ценится!