A 列中有一些已合并的单元格和一些未合并的单元格,大小不同,B 列由所有未合并的单元格组成。
我正在寻找一个公式(如果不存在,可以用VBA编写),它将确定A中的单元格是否合并或取消合并,如果合并,则合并B列中的组件(如公式连接)并将其写入其中的一行,例如上面的一行,如果可能的话删除下面的行。
我可以用公式来做到这一点吗?有人可以帮我提供给定的代码吗?
<小时/>现在我不想丢失给定行的数据,而是在它们之间添加第三列和第四列中的数据,如图所示。如果可能的话,让星星消失。
最佳答案
为了使其快速简单:(将其放入 VBA 窗口中的任何模块中)
Option Explicit
Public Function merge_merged(rng As Range) As Variant
Dim i As Long, j As Long, output() As Variant
ReDim output(1 To UBound(rng.Value), 1 To 2)
For j = 1 To UBound(rng.Value)
If Len(rng(j, 1).Text) Then
i = i + 1
output(i, 1) = rng(j, 1).Text
output(i, 2) = rng(j, 2).Text
Else
output(i, 2) = output(i, 2) & ", " & rng(j, 2).Text
End If
Next
For i = i + 1 To j - 1
output(i, 1) = ""
output(i, 2) = ""
Next
merge_merged = output
End Function
然后选择范围 D2:E13 并使用公式
=merge_merged(B2:C13)
This is an array formula and must be confirmed with Ctrl+Shift+Enter↵.
应该完全按照您的要求进行...如果您仍有任何疑问,请写评论
编辑:
获得所需答案后,不应更改问题,最好提出新问题。不过,这次我会提供一个解决方案:
Option Explicit
Public Function merge_merged(rngIn As Range) As Variant
Dim i As Long, j As Long, k As Long, output() As Variant, rng As Variant
rng = rngIn.Value
ReDim output(1 To UBound(rng), 1 To UBound(rng, 2))
For j = 1 To UBound(rng)
If Len(rng(j, 1)) Then
i = i + 1
For k = 1 To UBound(output, 2)
If IsNumeric(Replace(rng(j, k), "*", "")) Then
output(i, k) = Replace(rng(j, k), "*", "")
Else
output(i, k) = rng(j, k)
End If
Next
Else
For k = 1 To UBound(output, 2)
If Len(rng(j, k)) Then
If IsNumeric(output(i, k)) And IsNumeric(Replace(rng(j, k), "*", "")) Then
output(i, k) = 0 + output(i, k) + Replace(rng(j, k), "*", "")
Else
output(i, k) = output(i, k) & ", " & rng(j, k)
End If
End If
Next
End If
Next
For i = i + 1 To j - 1
For k = 1 To UBound(output, 2)
output(i, k) = ""
Next
Next
merge_merged = output
End Function
- 仅检查第一列是否折叠
- 如果“2”到“end”列包含数字,则会将它们相加
- 混合值(数字和字符串)可能会造成困惑
- “A”、“3”、“5”将是“A、3、5”
- “3”、“A”、“5”将变为“3、A、5”
- 但是“3”、“5”、“A”将是“8、A”
*
如果字符串是数字而没有它,将被删除
- 混合值(数字和字符串)可能会造成困惑
- 它将提取第一行的所有值(对于每个合并部分)
- 如果没有“第一个”值,则找到的第一个值将显示为“, value”
- 如果所有单元格均为空,则输出也将为空
- 空单元格将被忽略(“A”、“”、“C”将变为“A、C”)
- 将所有内容插入变量中,以便更快地适应更大的表
关于vba - MS Excel - 查找合并的单元格并在相应行中组合其中的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34942923/