簡體   English   中英

具有多個條件的Excel公式(匹配和索引?)

[英]excel formula with multiple criteria (match and index?)

我有一個具有以下結構的表,它顯示日歷條目:

|     Title     |  Description  |   StartTime   |    EndTime    |      User      |

表格1

我想創建一個具有以下結構的新表,該表將顯示第一行中給出的日期的所有用戶及其計划:

|    User    |  Date1  |  Date2  |  Date3  |  …

表2

我的問題是這樣的:

如果Date1(或Date2 ..)在開始日期和結束日期之間,我想在第二張表中顯示行的標題。 因此,我需要一個可以在所有單元格中編寫的excel公式。

我可以這樣寫一條SQL語句(我知道它的語法不正確,但是我想顯示自己的需要):

SELECT Title 
FROM Table1, Table2 
WHERE Date1 > StartDate AND Date1 < EndDate and User.Table1 = User.Table2

.............

你能幫我么?

想不到一個簡單的方法來做到這一點。

首先,如果有兩個標題落在同一用戶的同一日期段之內,您打算如何顯示它?

對我來說,這似乎是一種將匯總表反向工程為更詳細的表的工作,在該表中,您需要按日期在各個列中鍵入-填寫所有丟失的數據,然后使用簡單的樞軸即可完成工作。

首先,您只需要保留一個日期字段,然后填充開始日期和結束日期之間的所有日期。

從此:*列出兩個標題-用戶ak的a和b,以說明一個用戶在同一日期段中出現多個標題的問題。

在此處輸入圖片說明

為此:-填充標題將出現的所有日期

在此處輸入圖片說明

然后只需旋轉新范圍即可得到: 在此處輸入圖片說明

不用列出標題,我們可以看到它發生的日期。 輕松地將數據透視表復制並粘貼為值,然后將標題計數“ 1”替換為標題名稱“ a”以得到以下內容: 在此處輸入圖片說明

假設您希望標題由用戶連接,只需復制藍色部分,並獲得以下最終結果: 在此處輸入圖片說明

你有權力查詢嗎? 如果您擁有Excel 2016版本,則可以在以前的版本中擁有它(獲取和轉換),您可以下載它。 它是一個免費的加載項。

  1. 轉到數據
  2. 從表/范圍中選擇

它將顯示查詢編輯器,您可以在其中:

  1. 將數據類型更改為“日期”

  1. 轉到添加列
  2. 和7.在日期選項中,選擇“減天”

  1. 修正否定結果的Duration.Days([End] - [Start])

  1. 添加“自定義列” List.Dates([Start],[Subtraction]+1,#duration(1,0,0,0))

  1. 單擊角落(雙向箭頭),然后選擇“擴展到新行”

  1. 選擇並刪除不需要的列

  1. 進行轉換
  2. 點擊“數據透視列”
  3. 在“高級選項”中,選擇“不聚合”
  4. 回家選擇“關閉並加載”

最后,您將獲得一張包含新信息的新表。

您可以添加一些過濾器以查看特定時間段...

令人驚奇的是,您可以附加所需的所有數據,然后只需在綠色表中單擊鼠標右鍵並刷新,即可修復數據。

如果您只想復制並粘貼到“高級編輯器”中,則此查詢

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Title", type text}, {"Start", type date}, {"End", type date}, {"User", type text}}),
    #"Inserted Date Subtraction" = Table.AddColumn(#"Changed Type", "Subtraction", each Duration.Days([End] - [Start])),
    #"Added Custom" = Table.AddColumn(#"Inserted Date Subtraction", "Days", each List.Dates([Start],[Subtraction]+1,#duration(1,0,0,0))),
    #"Expanded Days" = Table.ExpandListColumn(#"Added Custom", "Days"),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Days",{"Start", "End", "Subtraction"}),
    #"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Removed Columns", {{"Days", type text}}, "en-US"), List.Distinct(Table.TransformColumnTypes(#"Removed Columns", {{"Days", type text}}, "en-US")[Days]), "Days", "Title")
in
    #"Pivoted Column"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM