
답변1
이를 수행하는 한 가지 방법은 다음과 같습니다.
• 셀에 사용되는 수식I4
=VLOOKUP($H4,INDIRECT($I$1),MATCH(I$3,HEADERS,0),0)
- 드롭다운과 관련하여 수식이 적절하게 작동하도록 일부 범위를 정의합니다.
=$B$4:$F$7
다음과 같이 정의된 범위SHOP1
=$B$11:$F$14
다음과 같이 정의된 범위SHOP2
- 이후 헤더는 각각 동일하게 유지되고 다음
SHOPS
중 하나에 대해 정의됩니다 .SHOPS
HEADERS
=$B$3:$F$3
- 다음으로,
VLOOKUP()
위에 표시된 수식을 사용하여 채우고 오른쪽으로 채우세요!
그러나 사용하려는 경우 SUMIFS()
사용을 제안 SUMPRODUCT()
하거나 SUM()
귀하의 기준에 따라Excel Version
• 셀에 사용되는 수식I4
=SUMPRODUCT(INDIRECT($I$1)*(Criteria_Range=$H4)*(I$3=HEADERS))
- 정의된 이름을 일부 변경합니다. 다음과 같이 :
=$C$4:$F$7
다음과 같이 정의된 범위SHOP1
=$C$11:$F$14
다음과 같이 정의된 범위SHOP2
=$C$3:$F$3
다음과 같이 정의된 범위HEADERS
=$B$4:$B$7
다음과 같이 정의된 범위Criteria_Range
- 이제 위의 수식을 이용하여 아래를 채우고 올바르게 채우세요!
아마도 SUMIFS()
정의된 명명된 범위를 사용하는 것은 다음을 사용하는 첫 번째 방법과 동일하게 유지됩니다.VLOOKUP()
=SUMIFS(INDEX(INDIRECT($I$1),,MATCH(I$3,HEADERS,0)),INDEX(INDIRECT($I$1),,1),$H4)
• 액세스 권한이 있는 경우 MS365
다음을 사용하면 전체 배열에 적용되는 단일 수식입니다.
=LET(
_Data, VSTACK(EXPAND(SHOP1,,6,"SHOP1"),EXPAND(SHOP2,,6,"SHOP2")),
_Filtered, FILTER(_Data, TAKE(_Data,,-1)=I1),
MAKEARRAY(ROWS(H22:H24), COLUMNS(I21:L21), LAMBDA(r,c,
VLOOKUP(INDEX(H22:H24,r),_Filtered,XMATCH(INDEX(I21:L21,c),HEADERS),0))))
경고:함수를 사용하는 INDIRECT()
것은 암시적이지 않습니다. Volatile
본질적으로 함수를 사용하면 작업 기능이 느려지고 Excel
열려 있는 통합 문서에 변경 사항이 있을 때마다 셀을 계속 다시 계산하게 됩니다. 휘발성 함수를 사용하지 않고 작업을 쉽게 하려면 데이터 구조를 일부 변경해야 합니다.
이는 Windows 및 MAC 이후 버전 POWER QUERY
에서 사용할 수 있는 기능을 사용하여 달성할 수도 있습니다 .Excel 2010+
- 먼저 소스 범위를 테이블로 변환하고 그에 따라 이름을 지정합니다. 이 예에서는 for
SHOP1
,SHOP_1
forSHOP2
asSHOP_2
및 forChannel
as 로 이름을 지정했습니다.Channeltbl
- Data다음으로 Tab --> Get & Transform Data--> Get Data--> From Other Sources--> 에서 빈 쿼리를 엽니다.Blank Query
- 위의 내용을 Power Query사용하면 이제 Home탭 --> --> 보이는 내용을 제거하여 Advanced Editor다음을 붙여넣은 후 창을 열 수 있습니다.M-CodeDone
• 출력의 경우:
let
Source = Excel.CurrentWorkbook(),
#"Filtered Rows" = Table.SelectRows(Source, each Text.StartsWith([Name], "SHOP")),
#"Expanded Content" = Table.ExpandTableColumn(#"Filtered Rows", "Content", {"Expense Type", "January", "February", "March", "April"}, {"Expense Type", "January", "February", "March", "April"}),
#"Filtered Rows1" = Table.SelectRows(#"Expanded Content", each ([Name] = CHANNEL)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows1",{"Name"}),
#"Filtered Rows2" = Table.SelectRows(#"Removed Columns", each [Expense Type] <> "Total Budget")
in
#"Filtered Rows2"
• 채널의 경우:
let
Source = Excel.CurrentWorkbook(){[Name="Channeltbl"]}[Content],
CHANNEL = Source{0}[CHANNEL]
in
CHANNEL
- 위의 내용을 두 개의 서로 다른 빈 쿼리에 붙여넣어야 한다는 점을 기억하세요. 또한
CHANNEL
쿼리는 연결이고 다른 쿼리는 시트에 입력해야 합니다.
- 마지막으로 다시 가져오려면 Excel--> 클릭 Close & Load또는 Close & Load To--> 클릭한 첫 번째 항목은 New Sheet필요한 출력을 생성하고 후자는 결과를 어디에 배치할지 묻는 창을 표시합니다.