Добавить столбец минимальных значений из другой таблицы
TanyaKatana
Дата: Пятница, 24.06.2022, 16:31 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Приветствую. Подскажите, можно ли как-то заполнить таблицу значениями из другой по условию? В прикреплённом файле есть таблица 1, в которую нужно добавить столбец с минимальным значением даты соответствующего товара из таблицы 2 по условию, если разница между датами менее 14 дней. Представляется что то вроде такого: впр минимум из табл2, если datediff<=14 Спасибо
Приветствую. Подскажите, можно ли как-то заполнить таблицу значениями из другой по условию? В прикреплённом файле есть таблица 1, в которую нужно добавить столбец с минимальным значением даты соответствующего товара из таблицы 2 по условию, если разница между датами менее 14 дней. Представляется что то вроде такого: впр минимум из табл2, если datediff<=14 Спасибо TanyaKatana
Ответить
Сообщение Приветствую. Подскажите, можно ли как-то заполнить таблицу значениями из другой по условию? В прикреплённом файле есть таблица 1, в которую нужно добавить столбец с минимальным значением даты соответствующего товара из таблицы 2 по условию, если разница между датами менее 14 дней. Представляется что то вроде такого: впр минимум из табл2, если datediff<=14 Спасибо Автор - TanyaKatana Дата добавления - 24.06.2022 в 16:31
Serge_007
Дата: Пятница, 24.06.2022, 17:01 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Здравствуйте Неоптимально:Код
=ИНДЕКС(J$4:J$11;МИН(ЕСЛИ((((B4=I$4:I$11)*J$4:J$11-C4)<14)*((B4=I$4:I$11)*J$4:J$11-C4)>0;СТРОКА($1:$8))))*(СУММ(--((((B4=I$4:I$11)*J$4:J$11-C4)<14)*((B4=I$4:I$11)*J$4:J$11-C4)>0))>0)
Здравствуйте Неоптимально:Код
=ИНДЕКС(J$4:J$11;МИН(ЕСЛИ((((B4=I$4:I$11)*J$4:J$11-C4)<14)*((B4=I$4:I$11)*J$4:J$11-C4)>0;СТРОКА($1:$8))))*(СУММ(--((((B4=I$4:I$11)*J$4:J$11-C4)<14)*((B4=I$4:I$11)*J$4:J$11-C4)>0))>0)
Serge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение Здравствуйте Неоптимально:Код
=ИНДЕКС(J$4:J$11;МИН(ЕСЛИ((((B4=I$4:I$11)*J$4:J$11-C4)<14)*((B4=I$4:I$11)*J$4:J$11-C4)>0;СТРОКА($1:$8))))*(СУММ(--((((B4=I$4:I$11)*J$4:J$11-C4)<14)*((B4=I$4:I$11)*J$4:J$11-C4)>0))>0)
Автор - Serge_007 Дата добавления - 24.06.2022 в 17:01
Nic70y
Дата: Пятница, 24.06.2022, 17:09 |
Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 9006
Репутация:
2369
±
Замечаний:
0% ±
Excel 2010
Код
=МИН(ЕСЛИ(ABS(ЕСЛИ(B4=I$4:I$11;J$4:J$11)-C4)<=14;J$4:J$11))
как понял.
Код
=МИН(ЕСЛИ(ABS(ЕСЛИ(B4=I$4:I$11;J$4:J$11)-C4)<=14;J$4:J$11))
как понял.Nic70y
ЮMoney 41001841029809
Ответить
Сообщение Код
=МИН(ЕСЛИ(ABS(ЕСЛИ(B4=I$4:I$11;J$4:J$11)-C4)<=14;J$4:J$11))
как понял.Автор - Nic70y Дата добавления - 24.06.2022 в 17:09
Egyptian
Дата: Пятница, 24.06.2022, 17:41 |
Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 526
Репутация:
193
±
Замечаний:
0% ±
Excel 2013/2016
Вариант.Код
=AGGREGATE(15;6;J$4:J$11/(B4=I$4:I$11)/($J$4:$J$11-C4<=14);1)
Вариант.Код
=AGGREGATE(15;6;J$4:J$11/(B4=I$4:I$11)/($J$4:$J$11-C4<=14);1)
Egyptian
Ответить
Сообщение Вариант.Код
=AGGREGATE(15;6;J$4:J$11/(B4=I$4:I$11)/($J$4:$J$11-C4<=14);1)
Автор - Egyptian Дата добавления - 24.06.2022 в 17:41
TanyaKatana
Дата: Понедельник, 27.06.2022, 10:39 |
Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
=МИН(ЕСЛИ(ABS(ЕСЛИ(B4=I$4:I$11;J$4:J$11)-C4)<=14;J$4:J$11)) как понял.
Самое удобное решение, спасибо. Serge_007 и Egyptian, спасибо за варианты.
=МИН(ЕСЛИ(ABS(ЕСЛИ(B4=I$4:I$11;J$4:J$11)-C4)<=14;J$4:J$11)) как понял.
Самое удобное решение, спасибо. Serge_007 и Egyptian, спасибо за варианты.TanyaKatana
Сообщение отредактировал TanyaKatana - Понедельник, 27.06.2022, 10:39
Ответить
Сообщение =МИН(ЕСЛИ(ABS(ЕСЛИ(B4=I$4:I$11;J$4:J$11)-C4)<=14;J$4:J$11)) как понял.
Самое удобное решение, спасибо. Serge_007 и Egyptian, спасибо за варианты.Автор - TanyaKatana Дата добавления - 27.06.2022 в 10:39
_Boroda_
Дата: Понедельник, 27.06.2022, 10:47 |
Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация:
6505
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
А в таб2 могут быть даты, меньшие, чем в таб1? Если да, то такое же правило - 14 дней?
А в таб2 могут быть даты, меньшие, чем в таб1? Если да, то такое же правило - 14 дней? _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение А в таб2 могут быть даты, меньшие, чем в таб1? Если да, то такое же правило - 14 дней? Автор - _Boroda_ Дата добавления - 27.06.2022 в 10:47
TanyaKatana
Дата: Понедельник, 27.06.2022, 16:11 |
Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
А в таб2 могут быть даты, меньшие, чем в таб1? Если да, то такое же правило - 14 дней?
вы хорошо подметили. Увлекся рисованием схожих таблиц, что упустил в своей логике. В варианте что мне понравился, Код
=МИН(ЕСЛИ(ABS(ЕСЛИ(B4=I$4:I$11;J$4:J$11)-C4)<=14;J$4:J$11))
, Модуль не подходит. Но чтобы еще у себя не усложнять, поскольку работа с массивами мне пока не очень поддается, добавил сравнение. Если результат функции больше даты первой таблицы, то всё в порядке.
А в таб2 могут быть даты, меньшие, чем в таб1? Если да, то такое же правило - 14 дней?
вы хорошо подметили. Увлекся рисованием схожих таблиц, что упустил в своей логике. В варианте что мне понравился, Код
=МИН(ЕСЛИ(ABS(ЕСЛИ(B4=I$4:I$11;J$4:J$11)-C4)<=14;J$4:J$11))
, Модуль не подходит. Но чтобы еще у себя не усложнять, поскольку работа с массивами мне пока не очень поддается, добавил сравнение. Если результат функции больше даты первой таблицы, то всё в порядке.TanyaKatana
Ответить
Сообщение А в таб2 могут быть даты, меньшие, чем в таб1? Если да, то такое же правило - 14 дней?
вы хорошо подметили. Увлекся рисованием схожих таблиц, что упустил в своей логике. В варианте что мне понравился, Код
=МИН(ЕСЛИ(ABS(ЕСЛИ(B4=I$4:I$11;J$4:J$11)-C4)<=14;J$4:J$11))
, Модуль не подходит. Но чтобы еще у себя не усложнять, поскольку работа с массивами мне пока не очень поддается, добавил сравнение. Если результат функции больше даты первой таблицы, то всё в порядке.Автор - TanyaKatana Дата добавления - 27.06.2022 в 16:11
TanyaKatana
Дата: Понедельник, 04.07.2022, 16:54 |
Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Снова здравствуйте. Всплыло слишком частые проблемы с модулем числа, с которыми уже не справляюсь, как написано в сообщении выше. Пытался исправить формулу, что предлагал Nic70y , но не справляюсь. Хотелось бы как-то так, но только рабочееКод
{=МИН(ЕСЛИ((ЕСЛИ(И((C4-(B4=I$4:I$11;J$4:J$11))<=14;(C4-(B4=I$4:I$11;J$4:J$11))>=0));J$4:J$11)))}
То есть, чтобы возвращалась самая близкая дата из второй таблицы, только если она меньше значения даты из первой и разница не более 14 дней
Снова здравствуйте. Всплыло слишком частые проблемы с модулем числа, с которыми уже не справляюсь, как написано в сообщении выше. Пытался исправить формулу, что предлагал Nic70y , но не справляюсь. Хотелось бы как-то так, но только рабочееКод
{=МИН(ЕСЛИ((ЕСЛИ(И((C4-(B4=I$4:I$11;J$4:J$11))<=14;(C4-(B4=I$4:I$11;J$4:J$11))>=0));J$4:J$11)))}
То есть, чтобы возвращалась самая близкая дата из второй таблицы, только если она меньше значения даты из первой и разница не более 14 дней TanyaKatana
Ответить
Сообщение Снова здравствуйте. Всплыло слишком частые проблемы с модулем числа, с которыми уже не справляюсь, как написано в сообщении выше. Пытался исправить формулу, что предлагал Nic70y , но не справляюсь. Хотелось бы как-то так, но только рабочееКод
{=МИН(ЕСЛИ((ЕСЛИ(И((C4-(B4=I$4:I$11;J$4:J$11))<=14;(C4-(B4=I$4:I$11;J$4:J$11))>=0));J$4:J$11)))}
То есть, чтобы возвращалась самая близкая дата из второй таблицы, только если она меньше значения даты из первой и разница не более 14 дней Автор - TanyaKatana Дата добавления - 04.07.2022 в 16:54
Nic70y
Дата: Понедельник, 04.07.2022, 17:02 |
Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 9006
Репутация:
2369
±
Замечаний:
0% ±
Excel 2010
Код
=МИН(ЕСЛИ(C4-ЕСЛИ(B4=I$4:I$11;ЕСЛИ(J$4:J$11<C4;J$4:J$11))<=14;J$4:J$11))
Код
=МИН(ЕСЛИ(C4-ЕСЛИ(B4=I$4:I$11;ЕСЛИ(J$4:J$11<C4;J$4:J$11))<=14;J$4:J$11))
Nic70y
К сообщению приложен файл:
22.xlsx
(9.8 Kb)
ЮMoney 41001841029809
Ответить
Сообщение Код
=МИН(ЕСЛИ(C4-ЕСЛИ(B4=I$4:I$11;ЕСЛИ(J$4:J$11<C4;J$4:J$11))<=14;J$4:J$11))
Автор - Nic70y Дата добавления - 04.07.2022 в 17:02
TanyaKatana
Дата: Понедельник, 04.07.2022, 17:22 |
Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Nic70y , спасибо!
Ответить
Сообщение Nic70y , спасибо!Автор - TanyaKatana Дата добавления - 04.07.2022 в 17:22
jakim
Дата: Вторник, 05.07.2022, 08:51 |
Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1216
Репутация:
316
±
Замечаний:
0% ±
Excel 2010
Power Query
[vba]Код
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Merged Queries" = Table.NestedJoin(Source,{"Товары"},Table2,{"Товары"},"NewColumn",JoinKind.LeftOuter), #"Expanded NewColumn" = Table.ExpandTableColumn(#"Merged Queries", "NewColumn", {"Мин. дата"}, {"NewColumn.Мин. дата"}), #"Changed Type1" = Table.TransformColumnTypes(#"Expanded NewColumn",{{"NewColumn.Мин. дата", type date}, {"Дата", type date}}), #"Renamed Columns" = Table.RenameColumns(#"Changed Type1",{{"NewColumn.Мин. дата", "Мин. дата"}}), #"Added Custom" = Table.AddColumn(#"Renamed Columns", "Custom", each [Мин. дата]-[Дата]), #"Changed Type" = Table.TransformColumnTypes(#"Added Custom",{{"Custom", Int64.Type}}), #"Added Conditional Column1" = Table.AddColumn(#"Changed Type", "Custom.1", each if [Custom] <= 14 then [Мин. дата] else null ), #"Removed Columns" = Table.RemoveColumns(#"Added Conditional Column1",{"Custom", "Мин. дата"}), #"Renamed Columns1" = Table.RenameColumns(#"Removed Columns",{{"Custom.1", "Минимум"}}) in #"Renamed Columns1"
[/vba]
Power Query
[vba]Код
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Merged Queries" = Table.NestedJoin(Source,{"Товары"},Table2,{"Товары"},"NewColumn",JoinKind.LeftOuter), #"Expanded NewColumn" = Table.ExpandTableColumn(#"Merged Queries", "NewColumn", {"Мин. дата"}, {"NewColumn.Мин. дата"}), #"Changed Type1" = Table.TransformColumnTypes(#"Expanded NewColumn",{{"NewColumn.Мин. дата", type date}, {"Дата", type date}}), #"Renamed Columns" = Table.RenameColumns(#"Changed Type1",{{"NewColumn.Мин. дата", "Мин. дата"}}), #"Added Custom" = Table.AddColumn(#"Renamed Columns", "Custom", each [Мин. дата]-[Дата]), #"Changed Type" = Table.TransformColumnTypes(#"Added Custom",{{"Custom", Int64.Type}}), #"Added Conditional Column1" = Table.AddColumn(#"Changed Type", "Custom.1", each if [Custom] <= 14 then [Мин. дата] else null ), #"Removed Columns" = Table.RemoveColumns(#"Added Conditional Column1",{"Custom", "Мин. дата"}), #"Renamed Columns1" = Table.RenameColumns(#"Removed Columns",{{"Custom.1", "Минимум"}}) in #"Renamed Columns1"
[/vba]jakim
Ответить
Сообщение Power Query
[vba]Код
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Merged Queries" = Table.NestedJoin(Source,{"Товары"},Table2,{"Товары"},"NewColumn",JoinKind.LeftOuter), #"Expanded NewColumn" = Table.ExpandTableColumn(#"Merged Queries", "NewColumn", {"Мин. дата"}, {"NewColumn.Мин. дата"}), #"Changed Type1" = Table.TransformColumnTypes(#"Expanded NewColumn",{{"NewColumn.Мин. дата", type date}, {"Дата", type date}}), #"Renamed Columns" = Table.RenameColumns(#"Changed Type1",{{"NewColumn.Мин. дата", "Мин. дата"}}), #"Added Custom" = Table.AddColumn(#"Renamed Columns", "Custom", each [Мин. дата]-[Дата]), #"Changed Type" = Table.TransformColumnTypes(#"Added Custom",{{"Custom", Int64.Type}}), #"Added Conditional Column1" = Table.AddColumn(#"Changed Type", "Custom.1", each if [Custom] <= 14 then [Мин. дата] else null ), #"Removed Columns" = Table.RemoveColumns(#"Added Conditional Column1",{"Custom", "Мин. дата"}), #"Renamed Columns1" = Table.RenameColumns(#"Removed Columns",{{"Custom.1", "Минимум"}}) in #"Renamed Columns1"
[/vba]Автор - jakim Дата добавления - 05.07.2022 в 08:51
прохожий2019
Дата: Вторник, 05.07.2022, 09:32 |
Сообщение № 12
Группа: Проверенные
Ранг: Старожил
Сообщений: 1298
Репутация:
327
±
Замечаний:
0% ±
365 Beta Channel
[vba]Код
let from = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], dop = Table.PrefixColumns(Excel.CurrentWorkbook(){[Name="Table2"]}[Content],"2"), gr = Table.Group(dop, "2.Товары", {"Мин. дата", each List.Min([2.Дата])}), join = Table.Join(from,{"Товары"},gr,{"2.Товары"},JoinKind.LeftOuter), f=(x)=>List.FirstN(x,2)&{ if Duration.TotalDays(x{3}-x{1}) <15 then x{3} else 0}, to = Table.FromList(Table.ToRows(join),f,{"Товары","Дата","Минимум"}) in to
[/vba]
[vba]Код
let from = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], dop = Table.PrefixColumns(Excel.CurrentWorkbook(){[Name="Table2"]}[Content],"2"), gr = Table.Group(dop, "2.Товары", {"Мин. дата", each List.Min([2.Дата])}), join = Table.Join(from,{"Товары"},gr,{"2.Товары"},JoinKind.LeftOuter), f=(x)=>List.FirstN(x,2)&{ if Duration.TotalDays(x{3}-x{1}) <15 then x{3} else 0}, to = Table.FromList(Table.ToRows(join),f,{"Товары","Дата","Минимум"}) in to
[/vba]прохожий2019
Ответить
Сообщение [vba]Код
let from = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], dop = Table.PrefixColumns(Excel.CurrentWorkbook(){[Name="Table2"]}[Content],"2"), gr = Table.Group(dop, "2.Товары", {"Мин. дата", each List.Min([2.Дата])}), join = Table.Join(from,{"Товары"},gr,{"2.Товары"},JoinKind.LeftOuter), f=(x)=>List.FirstN(x,2)&{ if Duration.TotalDays(x{3}-x{1}) <15 then x{3} else 0}, to = Table.FromList(Table.ToRows(join),f,{"Товары","Дата","Минимум"}) in to
[/vba]Автор - прохожий2019 Дата добавления - 05.07.2022 в 09:32