Excel Formula = Ax&Bx&Cx&Dx …合并单元格出现时

我正在处理与下面的图片类似的大桌子,但更多的列(A-AZ)和更多的行。 出于某种原因,我需要将整行放入一个string中,就像您可以看到的“预期结果”一样,但是我得到的数据非常糟糕。 你知道如何得到正确的结果吗? 没有VBA,如果可能的话

在这里输入图像说明

好,我不知道如何解决这个问题,但是我正在通过这个来closures它。 我正在使用合并的单元格,因为它需要使用它们,而且这里的所有人都大叫,合并的单元格是邪恶的,所以这个问题被closures为不可解的

为了扩大mattdeak和Brad的评论,问题是单元格A3:A6被合并。 结果,“灯”的值实际上只在单元格A3 ,单元格A4:A6是空白的。 因此, J4看到A4=""B4="" ,给你显示的结果(只有C4的值)。

评论者指出,最简单的方法是取消合并单元格,并将所有数据复制到每一行中。 如果你的单元格不得不保持合并,我build议在这个答案中使用的方法。 这是如何工作的:

  1. select一个可以添加第二组表格列的空间。 我会使用CA因为你说你有专栏A-AZ
  2. CA3 ,input公式=IF(ISBLANK(A3),CA2,A3)
  3. CA3通过DZ3填充。 因此DZ3应该指AZ3
  4. 填写CA3:DZ3的行数与您一样多。 在此刻。 CA3:DZ<last row>是表格的一个副本,其中包含所有内容。
  5. 更新公式为=CA3 & CB3 & ...无论您需要合并多less列。 使用来自CA:DZ的值,你应该没问题!

如果您可以使用一个小的VBA,您可以在公共模块中创build一个用户function,如下所示:

 Public Function MergedValue(r As Range) As Range Application.Volatile If Not r.MergeCells Then Set MergedValue = r Else Set MergedValue = r.MergeArea.Cells(1, 1) End If End Function 

然后用=MergedValue(Ax) & MergedValue(Bx) & MergedValue(Cx) ...replace所有=Ax & Bx & Cx ...公式

编辑:添加Application.Volatile在开始

编辑2:不使用Application.Volatile

 Public Function MergedValue(r As Range, RangeToCheck as range) As Range If Not r.MergeCells Then Set MergedValue = r Else Set MergedValue = r.MergeArea.Cells(1, 1) End If End Function 

如果你想检查范围[A1:C3]中的单元格,就用=MergedValue(A1,$A$1:$C$3)来调用它。

 =concat(offset(A3,-mod(row()+3,6),,4)) & concat(offset(B3, -mod(row()+1,2),,2)) & C3 & concat(offset(D3,-mod(row()+3,6),,4)) & concat(offset(E3, -mod(row()+1,2),,2)) & concat(offset(F3, -mod(row()+1,2),,2)) 

得到A列:在j3中,-mod(row()+ 3,6)= 0.所以concat(offset(A3,0,0,4))= A3&A4&A5&A6 = A3。

得到B列:在j3中,-mod(row()+ 1,2)= 0.所以cancat(offset(B3,0,0,2))= B3&B4 = B3。

等D,E,F列。


还有另一种方法(2016/6/20写)

步骤1.selectA3单元格,然后按Ctrl + A

步骤2.然后按下Ctrl + 1 (“!”的“1”键,而不是数字键盘的“1”)

第3步。select“alignment”标签,禁用“合并单元格”

步骤4.然后在“Home” – >“Find&Select” – >“Go to special” – >select“Blanks”(快捷键序列是: Alt – > h – > f – > d – > s – > k – > Enter

步骤5,激活的单元格为B4,然后写入=b3 ,然后按ctrl + Enter

步骤6.然后在J3单元中记下: =CONCATENATE(A3,B3,C3,D3,E3,F3)=CONCAT(A3:F3)