Как я могу расширить данные между двумя датами? - PullRequest
1 голос
/ 27 апреля 2019

Я хочу расширить диапазон дат до отдельных дат и отсортировать данные.

По сути, мне нужен набор данных, такой как этот Набор данных :

May 16, 2019    May 19, 2019    123
May 18, 2019    May 20, 2019    abc
May 26, 2019    May 29, 2019    xyz

и хотите, чтобы выходные данные были: Выходные данные

May 16, 2019    123
May 17, 2019    123
May 18, 2019    123
May 18, 2019    abc 
May 19, 2019    abc 
May 26, 2019    xyz
May 27, 2019    xyz

Можно ли это сделать с помощью формулы?

РЕДАКТИРОВАТЬ: Как я могу получить желаемый выход для простоодно значение?Скажи 123?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2019

Вот еще один способ расширения только одной строки данных:

=ArrayFormula({TO_DATE(row(indirect("a"&A1&":A"&B1-1))),if(row(indirect("a"&A1&":A"&B1-1)),C1)})

enter image description here

Это можно усовершенствовать, чтобы создать динамическую формулу для нескольких строк.

Сначала создайте вспомогательный столбец в столбце D, который просто содержит количество ночей пребывания:

=ArrayFormula(if(A:A="","",B:B-A:A))

Тогда это даст список дат:

=ArrayFormula(to_date(vlookup(row(indirect("a1:A"&sum(D:D))),{sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,A:A},2)+
row(indirect("a1:A"&sum(D:D)))-
vlookup(row(indirect("a1:A"&sum(D:D))),sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,1)))

И это даст данные столбца C:

=ArrayFormula(vlookup(row(indirect("a1:A"&sum(D:D))),{sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,C:C},2))

enter image description here

Пояснение.

Столбцы E-J содержат этапы получения окончательной формулы.

enter image description here

Столбец E:

=ArrayFormula(sumif(row(D:D),"<="&row(D:D),D:D))

Это дает промежуточный итог ночного пребывания на основе столбца D.

Колонка F:

=ArrayFormula(sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1)

Это дает промежуточный итог только до даты начала - необходимый для работы vlookup позже.

Колонка G:

=ArrayFormula(row(indirect("a1:A"&sum(D:D))))

Числа от 1 до N, где N - общее количество ночей пребывания, полученное из столбца D.

Колонка H:

=ArrayFormula(vlookup(row(indirect("a1:A"&sum(D:D))),{sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,A:A},2))

Даты начала каждого диапазона дат.

Столбец I:

=ArrayFormula(vlookup(row(indirect("a1:A"&sum(D:D))),sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,1))

Числа, соответствующие началу каждого диапазона дат.

Столбец J:

=ArrayFormula(vlookup(row(indirect("a1:A"&sum(D:D))),{sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,A:A},2)+
row(indirect("a1:A"&sum(D:D))))

Дата начала каждого диапазона дат плюс цифры от 1 до N

Колонка K:

=ArrayFormula(to_date(vlookup(row(indirect("a1:A"&sum(D:D))),{sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,A:A},2)+
row(indirect("a1:A"&sum(D:D)))-
vlookup(row(indirect("a1:A"&sum(D:D))),sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,1)))

То же, что столбец J минус начальный номер каждого диапазона дат.

Столбец L работает так же, как столбец H.

0 голосов
/ 28 апреля 2019
=ARRAYFORMULA({
 {TO_DATE(ROW(INDIRECT("A"&A1):INDIRECT("B"&B1))), 
 TRANSPOSE(SPLIT(REPT(C1&"♦", DAYS(B1, A1)+1), "♦")) };
 {TO_DATE(ROW(INDIRECT("A"&A2):INDIRECT("B"&B2))), 
 TRANSPOSE(SPLIT(REPT(C2&"♦", DAYS(B2, A2)+1), "♦")) };
 {TO_DATE(ROW(INDIRECT("A"&A3):INDIRECT("B"&B3))), 
 TRANSPOSE(SPLIT(REPT(C3&"♦", DAYS(B3, A3)+1), "♦")) }})

0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...