Страницы: 1
RSS
Извлечение значений в первом столбце согласно условию и перечисление этих значений через точку с запятой
 
Всем добрый день!
Имеется таблица с двумя столбцами - А и B.
В столбце А - наименования стран. В столбце B - значения Yes или No.
Если в столбце B значение ячейки равно Yes, то надо написать через точку с запятой и пробелом соответствующие наименования стран (ненулевые ячейки).
Какую единую формулу необходимо использовать?
Таблица прилагается.
Заранее большое спасибо.
 
Добрый.
Формулу стандартную - не знаю.
Можно пользовательскую функцию сделать или макросом.
Нужно такое решение?
Кому решение нужно - тот пример и рисует.
 
Спасибо!
Хотелось бы решить задачу только на основании стандартных формул.
 
Формула в одной ячейке? Доп столбец допустим?
 
для офиса 2019 или новее формула массива:
Код
=ОБЪЕДИНИТЬ("; ";1;ЕСЛИ((A2:A13<>0)*(B2:B13="Yes");A2:A13;""))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Спасибо! У меня более старая версия офиса.
Есть ли в этом случае варианты?
 
С допстолбцом
Скажи мне, кудесник, любимец ба’гов...
 
вариант к 4 посту.
 
Спасибо огромное!
Эти варианты отличные!
 
Учтите, что названия стран могут состоять из нескольких слов )))))
Скажи мне, кудесник, любимец ба’гов...
 
Вариант на Power Query. Вышло громоздко, но уж как получилось. Буду рад видеть более компактное решение.
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    Type = Table.TransformColumnTypes(Source,{{"Страна", type text}, {"Да / Нет", type text}}),
    RemZero = Table.SelectRows(Type, each ([Страна] <> "0")),
    Col1 = Table.AddColumn(RemZero, "concat", each [Страна]),
    GroupedR = Table.Group(Col1, {"Да / Нет"}, {{"Grouped", each _, type table}}),
    Col2 = Table.AddColumn(GroupedR, "Custom", each Table.Column([Grouped],"concat")),
    Extracted = Table.TransformColumns(Col2, {"Custom", each Text.Combine(List.Transform(_, Text.From), "; "), type text}),
    Custom2 = Table.AddColumn(Extracted, "Страна", each if [#"Да / Нет"] = "Yes" then [Custom] else if [#"Да / Нет"] = "No" then null else null),
    Filtered = Table.SelectRows(Custom2, each ([Страна] <> null)),
    Output = Table.SelectColumns(Filtered,{"Страна"})
in
    Output
 
ну я б наверно чуть вариант _Boroda_ подкорректировал
=IF((A2<>0)*(B2="Yes");"; "&A2;"")&C3)
и
=MID(C2;3;999)
или
=REPLACE(C2;1;2;)
По вопросам из тем форума, личку не читаю.
 
Код
=REDUCE(;ФИЛЬТР(A:A;(A:A<>0)*(B:B="Yes"));LAMBDA(a;b;a&"; "&b))
Изменено: Тимофеев - 17.05.2022 07:39:55
 
PQ кнопочный вариант
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Filtered Rows" = Table.SelectRows(Source, each ([#"Да / Нет"] = "Yes") and ([Страна] <> 0)),
    #"Reordered Columns" = Table.ReorderColumns(#"Filtered Rows",{"Да / Нет", "Страна"}),
    #"Grouped Rows" = Table.Group(#"Reordered Columns", {"Да / Нет"}, {{"Count",each Table.Skip(Table.Transpose(_), 1)}}),
    #"Expanded Count" = Table.ExpandTableColumn(#"Grouped Rows", "Count", {"Column1", "Column2", "Column3", "Column4"}, {"Count.Column1", "Count.Column2", "Count.Column3", "Count.Column4"}),
    #"Merged Columns" = Table.CombineColumns(#"Expanded Count",{"Count.Column1", "Count.Column2", "Count.Column3", "Count.Column4"},Combiner.CombineTextByDelimiter(", ", QuoteStyle.None),"Merged"),
    #"Removed Columns" = Table.RemoveColumns(#"Merged Columns",{"Да / Нет"})
in
    #"Removed Columns"
 
PQ - по началу кнопочный
Код
Text.Combine(Table.SelectRows(Excel.CurrentWorkbook(){[Name="Table1"]}[Content], each ([#"Да / Нет"] = "Yes") and ([Страна] <> 0))[Страна],"; ")
 
Цитата
memo написал:
Буду рад видеть более компактное решение.
Такой вариант (можно без последнего шага, но тогда столбец будет назван Column1):
Код
let
  src     = Excel.CurrentWorkbook(){[ Name = "Table1" ]}[Content],
  filter  = Table.SelectRows ( src, each [#"Да / Нет"] = "Yes" and [Страна] <> 0 ),
  combine = Text.Combine ( filter[Страна], "; " ),
  toTable = Table.FromColumns ( { { combine } }, type table [ Страна = text ] )
in
  toTable
Изменено: surkenny - 17.05.2022 14:52:10
 
surkenny, Отлично, спасибо.
Страницы: 1
Наверх