#excel-formula
#excel-формула
Вопрос:
У меня есть проблема с написанием формулы в VBA
формула в Excel очень проста, если тест на слово появляется в строке одной из моих 4 таблиц, то дайте мне сумму столбца 4 :
=SUMIF(Table1[Column1]:Table4[Column1],"Test",Table1[Column4]:Table4[Column4])
В VBA это было бы (и это работает) :
ws.Range("B1").Formula ="=SUMIF(Table1[Column1]:Table4[Column1],""Test"",Table1[Column4]:Table4[Column4])"
Моя проблема в том, что у меня динамическое количество таблиц, поэтому моя самая большая таблица — «Таблица» и я
Я действительно не знаю, как написать формулу в VBA, у меня всегда есть ошибка:
ws.Range("B1").Formula ="=SUMIF(Table1[Column1]:""Table"" amp; i amp;""[Column1]"",""Test"",Table1[Column4]:""Table"" amp; i amp;""[Column4]"")"
Каков наилучший способ достичь этого?
Sub Formula() Dim ws As Worksheet Dim i As Integer Set ws = Worksheets(1) i = ws.Range("A1") If i = 1 Then ws.Range("B1").Formula = "=SUMIF(Table1[Column1]:Table1[Column1],""Test"",Table1[Column3]:Table1[Column3])" End If If i = 2 Then ws.Range("B1").Formula = "=SUMIF(Table1[Column1]:Table2[Column1],""Test"",Table1[Column3]:Table[Column3])" End If If i = 3 Then ws.Range("B1").Formula = "=SUMIF(Table1[Column1]:Table3[Column1],""Test"",Table1[Column3]:Table3[Column3])" End If If i = 4 Then ws.Range("B1").Formula = "=SUMIF(Table1[Column1]:Table4[Column1],""Test"",Table1[Column3]:Table4[Column3])" 'What I would like : 'ws.Range("B1").Formula = "=SUMIF(Table1[Column1]:Table" amp; i amp; "[Column1],""Test"",Table1[Column4]:Table" amp; i amp; "[Column4])" End If End Sub
Большое спасибо
Комментарии:
1.
ws.Range("A1").Formula ="=SUMIF(Table1[Column1]:Table" amp; i amp; "[Column1],""Test"",Table1[Column4]:Table" amp; i amp; "[Column4])"
2. Это тоже не работает, я забыл сказать, что мое имя таблицы больше похоже на : Таблица» amp; i amp; «_client
3. Почему бы вам не показать нам точную формулу Excel и не сказать, что именно нужно изменить? Если это будет использоваться в цикле, то, по крайней мере, покажите нам полный код «цикла».
4. Нет, это не в цикле, мои таблицы находятся друг под другом. Объем таблицы варьируется. Под последними таблицами у меня есть формулы для вычисления сумм, и если в таблице нет нужного количества, у меня есть #REF! ошибка. Таким образом, формула должна быть написана с использованием VBA сразу после создания таблицы. В моем очень простом примере формула не работает. Это также может быть такая формула : =СУММА(Таблица 1[[#Итоги],[Сумма]],Таблица 2[[#Итоги],[Сумма]]) Просто вместо таблицы 2 ему понадобится таблица i, где i находится в A1