Следующая проблема. Есть огромный файл с данными по показам, кликам, бюджету рекламы клиентов (страница sheet 1).
На странице main нужно просуммировать данные только по тем кампаниям, которые содержат test1 или test2 (эти названия условны, т.к. реальные названия кампаний не могут разглашаться). При этом на странице main нужна разбивка по датам, чтобы даты не повторялись как на странице sheet1.
Пробовал через суммеслимн и регулярное выражение, но не получается.
lkor, здравствуйте! Заполните нормально пример желаемым результатом вручную. Из описания непонятно, что делать с разными компаниями в строке с одной датой на листе Main.
'запускать при активном листе Main
Sub iSumma()
Dim i As Long
Dim iLastRow As Long
Dim FoundCell As Range
Dim FAdr As String
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("B2:D" & iLastRow).ClearContents
With Worksheets("Sheet1")
For i = 2 To iLastRow
Set FoundCell = .Columns(1).Find(Cells(i, 1), , xlValues, xlWhole)
If Not FoundCell Is Nothing Then
FAdr = FoundCell.Address
Do
If Left(FoundCell.Offset(, 2), 4) = "test" Then
Cells(i, 2) = Cells(i, 2) + .Cells(FoundCell.Row, 4) 'показы
Cells(i, 3) = Cells(i, 3) + .Cells(FoundCell.Row, 5) 'клики
Cells(i, 4) = Cells(i, 4) + .Cells(FoundCell.Row, 6) 'бюджет
End If
Set FoundCell = .Columns(1).FindNext(FoundCell)
Loop While FoundCell.Address <> FAdr
End If
Next
End With
End Sub
lkor написал: эта формула должна работать в Гуглдокс
А у вас функцию QUERY в Google Spreadsheet отключили И можно вопрос, каким боком тут всплывает использование регулярного выражения? Какую часть строки вы хотите использовать?
По поводу регулярных выражений. Названия кампаний будут меняться, поэтому я хотел использовать функцию вида: =СУММЕСЛИМН('Выгрузка'!D:D;'Выгрузка'!A:A;A:A;'Выгрузка'!C:C;REGEXMATCH('Выгрузка'!C:C;".*test.*|.*promotion.*"))
lkor написал: Я вставляю код в редактор и мне выдает:
Google Spreadsheet использует javascript, а не VBA. Следовательно нужно переписать код с VBA на javascript с учётом особенностей объектной модели spreadsheet. А почему вы не хотите использовать QUERY, отфильтровав с REGEXP подаваемый ей на вход диапазон? Религиозные соображения?
Андрей VG написал: Google Spreadsheet использует javascript, а не VBA. Следовательно нужно переписать код с VBA на javascript с учётом особенностей объектной модели spreadsheet. А почему вы не хотите использовать QUERY , отфильтровав с REGEXP подаваемый ей на вход диапазон? Религиозные соображения?