Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Суммирование по нескольким условиям с использованием регулярного выражения
 
Приветствую.

Следующая проблема. Есть огромный файл с данными по показам, кликам, бюджету рекламы клиентов (страница sheet 1).

На странице main нужно просуммировать данные только по тем кампаниям, которые содержат test1 или test2 (эти названия условны, т.к. реальные названия кампаний не могут разглашаться). При этом на странице main нужна разбивка по датам, чтобы даты не повторялись как на странице sheet1.

Пробовал через суммеслимн и регулярное выражение, но не получается.

Файл пример прикладываю.

С уважением.
Изменено: lkor - 17 Мар 2020 11:20:49
 
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
 
Kuzmich, а есть другой вариант? Дело в том, что эта формула должна работать в Гуглдокс, а там майкрософтовские макросы не работают.
 
Доброе время суток
Цитата
lkor написал:
эта формула должна работать в Гуглдокс
А у вас функцию QUERY в Google Spreadsheet отключили :qstn:  :excl:
И можно вопрос, каким боком тут всплывает использование регулярного выражения? Какую часть строки вы хотите использовать?
Изменено: Андрей VG - 17 Мар 2020 12:44:42
 
Андрей VG, а как этот код использовать в Гуглдокс?

Я вставляю код в редактор и мне выдает:
Код
SyntaxError: Unexpected identifier (строка 2, файл Код.gs)
Закрыть

По поводу регулярных выражений. Названия кампаний будут меняться, поэтому я хотел использовать функцию вида:
=СУММЕСЛИМН('Выгрузка'!D:D;'Выгрузка'!A:A;A:A;'Выгрузка'!C:C;REGEXMATCH('Выгрузка'!C:C;".*test.*|.*promotion.*"))

Но не прокатило. Непонятно почему.
 
кросс
Вполне такой нормальный кинжальчик. Процентов на 100
 
Цитата
lkor написал:
Я вставляю код в редактор и мне выдает:
Google Spreadsheet использует javascript, а не VBA. Следовательно нужно переписать код с VBA на javascript с учётом особенностей объектной модели spreadsheet. А почему вы не хотите использовать QUERY, отфильтровав с REGEXP подаваемый ей на вход диапазон? Религиозные соображения?
 
Цитата
Андрей VG написал:
Google Spreadsheet использует javascript, а не VBA. Следовательно нужно переписать код с VBA на javascript с учётом особенностей объектной модели spreadsheet. А почему вы не хотите использовать  QUERY ,  отфильтровав с REGEXP  подаваемый ей на вход диапазон? Религиозные соображения?
Не знал, спасибо, почитаю об этой функции.  
Страницы: 1
Читают тему (гостей: 1)
Наверх