繁体   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