我有一个电子表格,其布局如下:
Date Project#
2012-01-01 130
2012-01-02 153
2012-01-03 153
2012-01-04 130
2012-01-05 130
2012-01-06 130
我想要获取 Project# 与变量匹配的行的最小/最大日期,以生成以下内容:
Projects Start date End date
130 2012-01-01 2012-01-06
153 2012-01-02 2012-01-03
我认为我可以通过 VLOOKUP 进行双向搜索,但我无法让它正常工作。只要项目编号全部分组在一起,它就可以正常工作,但如果它们像示例中那样交错,它就不再起作用了。它只从最顶部的分组返回,所以我得到的项目 130 的结束日期是 2012-01-01。
我对电子表格有点陌生,因此如果能得到任何帮助我将非常感激。
谢谢!
答案1
前言:我假设你熟悉 Calc 引用单元格的方式,即ColumnLetterRowNumber
范围的表达方式如下:A10:C12
表示 A10 到 C12 之间的所有单元格,即 3 行 3 列
好的,我假设您的数据在A1:B100
(或无论您有多少行)。
现在,D1
输入项目#,E1
输入开始日期并F1
输入结束日期然后列出所有项目编号(手动),如下所示:
日期 项目编号 项目编号 开始日期 结束日期 2012 年 1 月 1 日 130 130 2012-01-02 153 项目编号 开始日期 结束日期 2012 年 1 月 3 日 153 153 2012 年 1 月 4 日 130 2012-01-05 130 2012-01-06 130
现在的公式E2
是=DMIN(A1:B100,1,D1:D2)
因为F2
它是=DMAX(A1:B100,1,D1:D2)
。然后,将单元格 E2:F2 复制到其他行。
不幸的是,这些操作就是这样运作的。
答案2
我会用数据导航创建数据透视表。
- 菜单数据
- 选择数据导航
- 点击开始
- 点击好的
- 拖放项目到行字段
- 拖放日期至数据字段
- 双击日期你刚刚添加
- 选择功能最大限度
- 点击好的
这就是你要找的东西吗?
答案3
答案4
Scott,感谢您的改进 - 这确实很有帮助。为了简化电子表格的设置,我采取了以下步骤:
1 - 复制我想要找到最大值的数据列并将其添加到底部(因此行数是数据的两倍)
2 - 在重复数据旁边的列中(示例中为 C),在顶部单元格中输入 1,然后 =IF(ISODD(ROW(A2));C1+1;C1) 一直复制到数据的底部(步骤 1 只是使找到底部变得容易)
3 - 在下一列中输入 =IF(ISODD(ROW(A1));"Project";OFFSET($B$1;C1;0)) 并再次复制到重复数据的末尾 - 这将产生我们想要查询的交替字段名称和值
4 - 然后通过 =DMAX($A$1:$B$3437;"Livedate";OFFSET(D$1;ROW($A1)*2-2;0;2;1)) 找到最大值,它给出每行的最大值,如您的示例所示。
我有很多数据 - 3400 行 - 所以这样做只会让构建工作表变得更容易。谢谢您的提示,希望这对其他人有用。