我需要使用公式合并单元格,以便单元格仅在填充另一个选项卡上的单元格时合并。 我有2个选项卡,每个选项卡的列数相同。当标签2中的单元格a1-d1被填充时,我希望单元格a1-d1在标签1中合并,并且标签2中的d1的值被输入到标签1中新合并的单元格中。 这就是我所拥有的:
答案 0 :(得分:0)
由于您想要更改单元格,我不相信您可以使用公式(即使不是用户定义的公式)。因此我为你的问题编写了一个excel vba宏。
Sub FirstRows()
Sheets(1).Select
For curRow = 2 To 11
Merge = CheckEmptyCellValues(curRow)
If Merge = 4 Then
MergeCells (curRow)
cellValue = Sheets(2).Cells(curRow, 4).Value
Sheets(1).Cells(curRow, 1).Value = cellValue
End If
Next
End Sub
Sub MergeCells(curRow)
Sheets(1).Select
Range(Cells(curRow, 1), Cells(curRow, 4)).MergeCells = True
End Sub
Function CheckEmptyCellValues(curRow)
Merge = 0
Sheets(2).Select
For i = 1 To 4
If Len(Cells(curRow, i).Value) > 0 Then
Merge = Merge + 1
End If
Next
CheckEmptyCellValues = Merge
End Function
下面你可以看到结果。来自表2的值已被复制到表1(第二图像)。在Sheet 1中,如果在第一个图像(表2中)每个单元格(从列a到列d),行中的单元格被合并(在行2中从单元格A2到单元格D2(A2-D2现在只是一个单元格))连续有一个值。
修改代码中有一些不可能或可能导致错误理解的内容
Function CheckEmptyCellValues(curColumn)
Merge = 0
Sheets(2).Select
For i = A To d
If Len(Cells(curColumn, 11).Value) > 0 Then
Merge = Merge + 1
End If
Next
CheckEmptyCellValues = Merge
End Function
For i = A To d
是不可能的。如果你想使用循环,你必须使用数字:For i = 1 To 4
这将重复For
和Next
之间的代码4次从1开始Cells(curColumn, 11).Value
技术正确但具有误导性。 Excel使用(
之后的第一个值作为行索引,第二个值使用列索引。两个值都必须是数字:Cells(4,2).Value从第4个返回Cell值。行和第二列(在Excel Gui中,单元格B4)尝试将此行For i = A To d
更改为此For i = 1 To 4
,并查看是否返回了希望的结果。
在您的其他修改中,您有一些相同的错误:
For curColumn = A to d
需要数字而不是字母(除非A和d是一个填充数字的变量,但根据您的代码示例,情况并非如此cellValue = Sheets(2).Cells(curColumn, d).Value
有相同的错误,如果d只是字母d而不是d = 4
而不是你不能在循环中使用它。这是您评论中的代码:
Sub FirstRows()
Sheets(1).Select
For curColumn = A To d
Merge = CheckEmptyCellValues(curColumn)
If Merge = d Then
MergeCells(curColumn)
cellValue = Sheets(2).Cells(curColumn, d).Value
Sheets(1).Cells(curColumn, d).Value = cellValue
End If
Next
End
Sub Sub MergeCells(curColumn)
Sheets(1).Select
Range(Cells(curColumn, 1), Cells(curColumn, d)).MergeCells = True
End Sub
小心它没有运行。