Я использую Libreoffice. (Если бы Excel или GoogleSpreadsheets были единственным способом получить решение, я бы с радостью переключился. Но предпочтительная платформа — LibreOffice, я ищу решение на основе этого программного обеспечения).
Вот чего я хочу добиться, у меня есть такая таблица:
|Date |Available? |Length |
|2/8 9:00 |no |10
|26/8 9:00 |yes |5
|28/8 9:00 |no |2
|29/8 8:00 |yes |5.5
|30/8 9:00 |yes |6
|31/8 9:00 |no |3
Теперь я хочу извлечь все даты, где в столбце "доступно" есть ДА. В этом сценарии не встречаются разные месяцы, поэтому важен только день. В результате в какой-то другой части таблицы я хочу получить
26, 29, 30
И чтобы сделать это еще немного сложнее, что если я хочу посчитать количество дней, когдадлина >5идоступныйверно? В приведенном выше примере это будет
3
Это возможно? Я повозился с VLOOKUP, но не знаю, с чего начать. Думаю, Excel будет работать так же или похоже.
Я хочу, чтобы это работало без необходимости пользователю фильтровать что-либо вручную. Идея заключается в том, чтобы просто скопировать/вставить данные и получить результат через формулу на другом листе файла и создать счет-фактуру там.
решение1
В Excel... и на основе этого хорошего index() + match()ссылка.
Решение для этой части:
"если я хочу посчитать количество дней, где длина >5 и доступно, верно? > 3"
если длина >5, то вы должны получить 2, а не 3, если длина >=5, то вы получите только 3.
Предположим, что данные вашего образца находятся в диапазоне A1:C7, тогда ответ будет следующим:
=COUNTIFS(B:B,"yes",C:C,">5")
Вы получите 2.
и для этой части:
"хотите извлечь все даты, где в столбце "доступно" есть ДА"
Предположим, что ваши данные «2/8 9:00» расположены в ячейке A2, а «31/8 9:00» — в ячейке A7, все данные в столбце Id A отформатированы как дата/время в Excel, поместите это в D2:
=IFERROR(IF(ROWS($A$2:$A2)>1,INDEX(OFFSET($A$2:$A$7,MATCH(D1,$A$2:$A$7,0),0),MATCH("yes",OFFSET($B$2:$B$7,MATCH(D1,$A$2:$A$7,0),0),0)),INDEX($A$2:$A$7,MATCH("yes",$B$2:$B$7,0))),"")
и это в E2:
=IFERROR(DAY(D2),"")
там вы увидите "26, 29, 30".