我有一个按日和年排列的数据透视表。不幸的是,日期作为“年”标题下的条目出现。有没有办法让年份包含在实际条目中,而不仅仅是标题?如果我要从此数据透视表中复制值,是否有办法将 2014 年附加到单元格并将其读为日期?
该表看起来是这样的:
Year 1 Count
02-August 1
05-August 1
09-August 4
Year 2
02-August 3
答案1
给定您的示例表,并假设包含“年份 1”标题的单元格是 A1,您可以执行此操作以获取在每行列出“年份 X”的列。
单元格 C2: =IF(LEFT(A1,4)="Year",A1,IF(LEFT(A2,4)="Year","",C1))
具体来说:
=IF(LEFT(A1,4)="Year",
- 当 A1 中的前四个字符是“年份”时,第一个 IF 语句将为 TRUE。A1,
- 当 IF 语句为 TRUE 时,C2 的值将复制 A1。IF(LEFT(A2,4)="Year",
- 当第一个 IF 语句为 FALSE 时,第二个 IF 语句将检查 A2 是否以“年份”开头。"",
- 当第二个 IF 语句为 TRUE(且第一个为 FALSE)时,C2 将为空白。C1))
- 当两个 IF 语句均为 FALSE 时,C2 将从 C1 中提取值。
对于 C2,公式将返回“Year 1”。将公式复制到列的其余部分,单元格引用将自动调整,以便“A1”引用始终指向当前单元格左侧两个单元格和上方一个单元格,而“C1”引用始终指向当前单元格正上方的单元格。因此,对于您当前的列表,将添加 C 列,因此表格如下所示:
Year 1 Count Year
02-August 1 Year 1
05-August 1 Year 1
09-August 4 Year 1
Year 2
02-August 3 Year 2
要将年份转换为常规年份值,您需要一个查找表来定义哪个年份 ID 与哪个日历年份匹配,或者至少需要知道“第 1 年”是什么。如何在没有查找表的情况下执行此操作可能取决于 A 列中的格式,因此我只需
使用 F:G 列中的查找表(F 列有“年份 X”,将 X 替换为实际数字,G 列有相应的四位数年份),以下是如何将年份放入 D2 中:=IF(C2="","",VLOOKUP(C2,F:G,2,FALSE))
=IF(C2="","",
- 如果 C2 为空,则将 D2 留空。否则,VLOOKUP 会在空白处出错。VLOOKUP(C2,F:G,2,FALSE))
- 当 C2 不为空时,在 F:G 最左列中查找 C2 的值,并从第二列返回相应的值。仅使用精确匹配。
即使没有查找表,只要年份是连续编号的,您也可以在 D2 中执行以下操作:=IF(C2="","",RIGHT(A2,LEN(A2)-5)+2012-1)
=IF(C2="","",
- 如果 C2 为空,则将 D2 留空。否则...RIGHT(A2,LEN(A2)-5)
- 从 A2 中取出除前 5 个字符之外的所有字符。(这应该只是“X 年”中的“X”部分。)+2012
- 添加 2012(将 2012 替换为您希望作为第 1 年的实际年份)。-1)
- 减去 1(因为“X 年”从 1 开始。否则,所有年份值都会增加一,或者您需要将“2012”(“第 1 年”)调整为“2011”(“第 1 年”之前的一年)。
如果您只想将年份添加到日期的末尾,而不关心日期格式是否为实际日期,那么您可以这样做:
单元格 E2:=IF(D2="","",CONCATENATE(A2," ",D2))
IF(D2="","",
- 如果 D2 为空,则将 E2 留空。否则,您有时会看到单元格中包含“X 年”类型的值。CONCATENATE(A2," ",D2))
- 如果 D2 不为空,则 E2 将具有 A2 的值,后跟一个空格,后跟 D2 的值,组合成一个字符串。
最后,您的工作表看起来应该是这样的(我向 C:G 添加了标题,如果您对 D 使用“无查找表”方法,则可以完全不用 F:G):