如何合并表格中的文本单元格?

时间:2013-09-20 19:39:22

标签: excel indexing concatenation match lookup

下面的数据显示在工作表1中。我需要将工作表2中的数据分为两列,第一列为“月 - 年”格式,第二列输出下面相应月/年的数据。 / p>

例如:

Year    Jan Feb Mar Apr May Jun Jul Aug Sep

1913    9.8 9.8 9.8 9.8 9.7 9.8 9.9 9.9 10.0    

1914   10.0 9.9 9.9 9.8 9.9 9.9 10  10  10

输出必须按以下格式读取:

MM-YYYY / Data  
Jan-1913 /    9.8  
Feb-1913 / 9.8  

我需要使用Excel公式,而不是VBA。

2 个答案:

答案 0 :(得分:0)

使用连接?

=CONCATENATE(B$1,"-",$A2)

然后向上和向下拖动公式。

这假设月份在第一列和第一列中的年份,其中Jan在B1中,1913在A2中。

或使用:

=B$1&"-"&$A2

美元符号锁定行或列,因此您不必每次都重新调整公式。

编辑:好像你只想填写一栏......

在单元格B2中键入Jan-1913,然后键入Feb-1913。选择两个单元格并向下拖动。

enter image description here

如果日期未显示为mm-yyyy,则只需应用自定义格式。

在B列的内容中填写,复制并粘贴为值。 编辑:有关其他部分的附录:

您已经拥有上述方法的第一列,因此在第二列中,使用以下公式:

=INDEX(Sheet1!$B$2:$M$102,MATCH(RIGHT(TEXT(Sheet2!A2,"mmm-yyyy"),4)*1,Sheet1!$A$2:$A$102,0),MATCH(LEFT(TEXT(Sheet2!A2,"mmm-yyyy"),3),Sheet1!$B$1:$M$1,0))

根据需要替换范围和/或工作表名称。如果这返回#N/A,请尝试以下方法:

=INDEX(Sheet1!$B$2:$M$102,MATCH(RIGHT(TEXT(Sheet2!A2,"mmm-yyyy"),4),Sheet1!$A$2:$A$102,0),MATCH(LEFT(TEXT(Sheet2!A2,"mmm-yyyy"),3),Sheet1!$B$1:$M$1,0))

请注意,公式使用MATCH(),这意味着单元格格式很重要,因此可能无效。例如,如果Sheet1中的年份是文本格式,则第二个公式将起作用;不是第一个,反之亦然。

答案 1 :(得分:0)

我希望你知道如何编写宏。 (Google visualbasic + excel)

基本上你想循环你的变量,并连接你的单元格(用于组合的花哨计算机术语)。我相信这应该有用。

Dim monthIdx as Integer
Dim yearIdx as Integer

Dim writeColumnIdx as Integer
Dim myConcatenatedDate as String
writeRowIdx = 2
for yearIdx is 2 to 94
  for monthIdx is 2 to 10
    myConcatenatedDate = Cells(yearIdx, 1).value + "-" + Cells(1, monthIdx).value
    Cells(writeRowIdx, monthIdx).value = myConcatenatedDate
  next monthIdx
next yearIdx

请注意,更简单的解决方案是在一个单元格中键入Jan-1900,移动一个并键入Feb-1900 ...然后突出显示两个单元格,单击两个框左上角的光标然后将它拖过adinfinem(也许)。 Excel非常擅长做这些类型的事情(除非你只想要jan-sep)。