具有多个条件的excel公式(匹配和索引?)

时间:2017-12-28 10:11:25

标签: excel excel-formula

我有一个包含以下结构的表格,它显示日历条目:

|     Title     |  Description  |   StartTime   |    EndTime    |      User      |

table1

我想创建一个具有以下结构的新表,该表将显示所有用户及其在第一行中给出的日期的计划。:

|    User    |  Date1  |  Date2  |  Date3  |  …

table2

我的问题是这样的:

如果Date1(或Date2 ..)介于开始日期和结束日期之间,我想在第二个表格中显示行的标题。所以我需要一个excel公式,我可以在所有单元格中编写。

我可以写一个这样的SQL语句(我知道它的语法不正确,但我想展示我需要的东西):

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

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

你能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

想不到一个简单的方法来做到这一点。

首先,如果有两个标题属于同一用户的同一日期段,您打算如何显示它?

对我而言,这看起来像是将汇总表反向工程到更详细的表,在这个表中您需要按日期键入单个列 - 填写所有缺失的数据,然后一个简单的数据透镜就可以执行工作

首先,您需要只保留一个日期字段,然后填写开始日期和结束日期之间的所有日期。

从这个: *列出两个标题 - 用户a的a和b,用于说明一个用户在同一日期段中出现多个标题的问题。

enter image description here

对此: - 填写标题出现的所有日期

enter image description here

然后只需转动新范围即可: enter image description here

我们可以看到它出现的日期,而不是列出的标题。轻松将枢轴复制并粘贴为值,然后将标题名称“1”替换为标题名称“a”,以获得以下内容: enter image description here

假设您希望用户连接标题,只需复制蓝色部分,然后获得最终结果: enter image description here

答案 1 :(得分:0)

你有Power Query吗?如果你有Excel 2016版本,你可以在以前的版本中使用它(Get&amp; Transform),你可以下载它。它是一个免费的插件。

  1. 转到数据
  2. 从表格/范围中选择
  3. 确定
  4. 它将出现在查询编辑器中,您可以:

    1. 将数据类型更改为&#34;日期&#34;
      1. 转到添加列
      2. 和7.在日期选项中选择&#34;减去天数&#34;
        1. 修正否定结果Duration.Days([End] - [Start])
          1. 添加&#34;自定义列&#34; List.Dates([Start],[Subtraction]+1,#duration(1,0,0,0))
            1. 点击角落(doble箭头)并选择&#34;展开到新行&#34;
              1. 选择并删除您不需要的列
                1. 转到转换
                2. 点击&#34; Pivot Column&#34;
                3. In&#34;高级选项&#34;选择&#34;不要聚合&#34;
                4. 确定
                5. 回家选择&#34;关闭&amp;负载&#34;
                6. 最后,您将获得一张包含新信息的新表格。

                  您可以添加一些过滤器以查看特定时间段...

                  关于这一点的惊人之处在于您可以附加所需的所有数据,然后在绿色表格中进行简单的右键单击并刷新,您将修复数据。

                  如果您只想复制并粘贴&#34;高级编辑器&#34;

                  ,这就是查询
                  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"