在Microsoft Excel 2007中查找并排序相同月份的单个名称

时间:2012-11-01 11:11:14

标签: excel excel-formula

enter image description here

我正在使用Microsoft excel 2010.我有不同的日期,如列E1:E19,不在特定的时间间隔内。我希望帮助只找到开始月份日期并将它们粘贴到G列中,如图所示。

3 个答案:

答案 0 :(得分:4)

首先,就是说 - 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 中的起点 - 因此我们使用SUBTOTAL使用MIN(即5)来获取E列中的最早日期。< / p>

现在我们在这里工作,通过偏移我们用于计算SUBTOTAL的范围,仍然使用MIN(5)来获取每个月的开头。

技巧是OFFSET。第一个参数是基本范围,我们将偏移,然后我们必须确定要偏移的行数,并且不会得到错误,我们使用ROWS(basicRange) - rowOffset始终保持在out范围内。

MATCH用于确定必要的偏移量,方法是使用EOMONTH G1 中查找当月最后列出的日期行。

希望这可以解决任何问题。

编辑:

因为我必须翻译这个,所以这是原作:

=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 :(得分: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中的行号匹配的第一条记录(G1中的ROW()返回1),然后VLOOKUP()将返回A:E中第5列中的值(即列E与日期)。

A栏中的公式应位于VLOOKUP()公式日期的左侧。

或者,您可以将其放在右侧的列中,然后在G列中使用另一个公式代替VLOOKUP()

=SUMIF(F:F,ROW(),E:E)

对于F中的值与G中单元格的行号相匹配的行,将E中的所有值相加。

答案 2 :(得分:0)

我认为您需要使用analysis-toolpak Add-on来执行此任务:

如果您需要知道如何加载它,请查看以下网址:

http://office.microsoft.com/en-us/excel-help/load-the-analysis-toolpak-HP001127724.aspx

此致