Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Добавить столбец минимальных значений из другой таблицы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Добавить столбец минимальных значений из другой таблицы
TanyaKatana Дата: Пятница, 24.06.2022, 16:31 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

Приветствую.
Подскажите, можно ли как-то заполнить таблицу значениями из другой по условию?
В прикреплённом файле есть таблица 1, в которую нужно добавить столбец с минимальным значением даты соответствующего товара из таблицы 2 по условию, если разница между датами менее 14 дней.
Представляется что то вроде такого: впр минимум из табл2, если datediff<=14

Спасибо
К сообщению приложен файл: 6647076.xlsx (9.3 Kb)
 
Ответить
СообщениеПриветствую.
Подскажите, можно ли как-то заполнить таблицу значениями из другой по условию?
В прикреплённом файле есть таблица 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)
К сообщению приложен файл: 20220624_TanyaK.xls (60.5 Kb)


Ю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))
как понял.
К сообщению приложен файл: 6403461.xlsx (9.7 Kb)


Ю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
Дата добавления - 24.06.2022 в 17:41
TanyaKatana Дата: Понедельник, 27.06.2022, 10:39 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

=МИН(ЕСЛИ(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
 
Ответить
Сообщение
=МИН(ЕСЛИ(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 дней?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
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
Репутация: 0 ±
Замечаний: 20% ±

А в таб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
Дата добавления - 27.06.2022 в 16:11
TanyaKatana Дата: Понедельник, 04.07.2022, 16:54 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

Снова здравствуйте. Всплыло слишком частые проблемы с модулем числа, с которыми уже не справляюсь, как написано в сообщении выше.
Пытался исправить формулу, что предлагал 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
Дата добавления - 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))
К сообщению приложен файл: 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
Репутация: 0 ±
Замечаний: 20% ±

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]
К сообщению приложен файл: 9487371.xlsx (18.2 Kb)
 
Ответить
Сообщение
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
Power Query

[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]
К сообщению приложен файл: 0296667.xlsx (18.6 Kb)
 
Ответить
Сообщение
Power Query

[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
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!