#excel #excel-formula #pivot-table
#excel #excel-формула #сводная таблица
Вопрос:
Я использую O365.
Я пытаюсь преобразовать данные в формате A: D в формат F: K, и я в тупике, прося о помощи.
Моя первая формула в H2:
=INDEX(C:C,MATCH(1,(A:A=F2)*(C:C="*Dental*"),0))
Это возвращает #N / A. Что я не так понимаю? Возвращает столбец C, соответствующий строке, где код EE равен F2, а план содержит «Dental».
План всегда будет включать либо «Dental», либо «United».
Затем я подумал бы использовать значения в F2 и H2 для поиска значения покрытия для этого плана EE в столбцах I и K.
Любая помощь приветствуется. Спасибо!
Редактировать:
=INDEX(C:C,MATCH(1,(A:A=F2)*(IFERROR(SEARCH("*Dental*",C:C),0)),0))
Эта формула решает мою проблему.
Комментарии:
1. Сколько групп
EE Codes
может быть?2. Всего существует около 500 не дублирующихся кодов EE (столбец F), а исходный список (столбец A) содержит около 1000 дубликатов.
3. Наверное, я не понял: может ли один EE-код иметь более одного дубликата (т.е. Три или четыре)
4.
(C:C="*Dental*")
не выполняет сопоставление подстановочных знаков. Он ищет точную строку. Вы можете сделать(ISNUMBER(SEARCH("Dental",C:C)))
5. Это можно сделать довольно легко с помощью Power Query, особенно если вы можете предоставить подробную информацию обо всех различных заголовках столбцов.
Ответ №1:
Я немного расширил ваш пример
Если у вас есть O365, вы должны быть в состоянии выполнить следующее.
H2 =XLOOKUP($F$2:$F$5amp;"Dental*",$A$2:$A$7amp;$C$2:$C$7,C2:C7,"<not found>",2)
I2 =XLOOKUP($F$2:$F$5amp;"Dental*",$A$2:$A$7amp;$C$2:$C$7,D2:D7,"<not found>",2)
J2 =XLOOKUP($F$2:$F$5amp;"United*",$A$2:$A$7amp;$C$2:$C$7,C2:C7,"<not found>",2)
L2 =XLOOKUP($F$2:$F$5amp;"United*",$A$2:$A$7amp;$C$2:$C$7,D2:D7,"<not found>",2)
Это также позволит вам узнать, отсутствуют ли какие-либо выборы.
Вы также можете перечислить все уникальные коды EE, используя F2 =UNIQUE(A2:A7)
.
Ответ №2:
В Power Query можно:
- Группировать по
EE Code
иEE
- Затем объедините столбцы типа покрытия / плана в группе, чтобы можно было разделить на отдельные столбцы.
M код
let
Source = Excel.CurrentWorkbook(){[Name="Table13"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"EE Code", type text}, {"EE", type text}, {"Plan", type text}, {"Coverage", type text}}),
//Group by EE code and EE
#"Grouped Rows" = Table.Group(#"Changed Type", {"EE Code", "EE"}, {{"Grouped", each _, type table [EE Code=nullable text, EE=nullable text, Plan=nullable text, Coverage=nullable text]}}),
//Exapnd the Grouped columns to create a text string which can be split into the relevant columns
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each
List.Combine(
List.Zip({Table.Column([Grouped],"Plan"),Table.Column([Grouped],"Coverage")}))),
#"Extracted Values" = Table.TransformColumns(#"Added Custom", {"Custom", each Text.Combine(List.Transform(_, Text.From), ";"), type text}),
//This line will need modification if your order of coverage varies; or if the types of coverage are different
#"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Custom", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv),
{"Dental Plan", "Dental Coverage", "Health Plan", "Health Coverage"}),
//Remove unneeded column
#"Removed Columns" = Table.RemoveColumns(#"Split Column by Delimiter",{"Grouped"})
in
#"Removed Columns"
Результаты из ваших данных:
Mcode потребуется изменить, если существуют другие типы покрытий или если типы покрытия расположены не в нужном порядке. Смотрите Комментарии в коде