我正在使用 Microsoft excel 2010。我有不同的日期,例如 E1:E19 列,它们不在特定的时间间隔内。我想要帮助查找仅开始月份的日期并将它们粘贴到 G 列中,如图所示。
3 回答
首先,就是说 - K_B 和Ibrahim Odeh都有有效且良好的尝试。我只想添加另一个选项,因为这些选项使用额外的行或手动工具。
这是我想出的解决此问题的公式,如您的屏幕截图所示 - 只有一列,只有带有开始日期的行:
G1=SUBTOTAL(5,E$1:E$19)
G2=SUBTOTAL(5,OFFSET(E$1:E$19,MATCH(EOMONTH(G1,0),E$1:E$19,1),0,ROWS(E$1:E$19)-MATCH(EOMONTH(G1,0),E$1:E$19,1)))
可以将它用于整个列,如下所示:
G1=SUBTOTAL(5,E:E)
G2=SUBTOTAL(5,OFFSET(E:E,MATCH(EOMONTH(G1,0),E:E,1),0,ROWS(E:E)-MATCH(EOMONTH(G1,0),E:E,1)))
现在,一些解释:
首先,您需要G1中的起点- 因此我们使用(即 5)SUBTOTAL
获取 E 列中的最早日期。MIN
现在我们从这里开始工作,通过偏移我们用来计算的范围SUBTOTAL
,仍然使用MIN
(5),得到每个月的开始。
诀窍是OFFSET
。第一个参数是超出基本范围,我们将偏移,然后我们必须确定要偏移多少行,为了不出错,我们使用ROWS(basicRange)
-rowOffset 始终保持在超出范围内。
MATCH
用于确定必要的偏移量,方法是 使用. 从G1EOMONTH
中查找该月最后列出的日期所在的行。
希望这可以解决任何问题。
编辑:
因为我必须翻译这个,这里是原文:
=TEILERGEBNIS(5;E:E)
=TEILERGEBNIS(5;BEREICH.VERSCHIEBEN(E:E;VERGLEICH(MONATSENDE(G1;0);E:E;1);0;ZEILEN(E:E)-VERGLEICH(MONATSENDE(G1;0);E:E;1)))
只要您的日期列按照示例中的样子进行排序,然后执行以下操作:
在第 1 行上方插入一行(用于使用公式)在表格所有行的 A 列中输入公式。公式如下:
=If(NOT(YEAR($E2)&MONTH($E2)=YEAR($E1)&MONTH($E1), MAX($F$1:$F1)+1, "")
这会将增加的数字从 1 添加到仅在该月表中的第一个日期旁边所涉及的月数。
然后在 G 列的表格中输入:
=VLOOKUP(ROW(), A:E, 5)
您可以根据需要将此公式向下拖动。该公式在 A:E 中找到与 G 中的行号匹配的第一条记录(ROW()
在 G1 中返回 1),然后VLOOKUP()
将返回 A:E 中第 5 列中的值(即 E 列与日期)。
A 列中的公式应位于日期的左侧,以使VLOOKUP()
公式生效。
或者,您可以将其放在右侧的列中,然后使用另一个公式代替VLOOKUP()
G 列:
=SUMIF(F:F,ROW(),E:E)
这会将 E 中的所有值相加,其中 F 中的值与 G 中单元格的行号匹配。
我认为您需要使用 analysis-toolpak 插件来执行此任务:
如果您需要知道如何加载它,请查看以下 URL:
http://office.microsoft.com/en-us/excel-help/load-the-analysis-toolpak-HP001127724.aspx
问候