想要实现的效果是在D、E、F、G、H之后插入一列,并计算各合并单元格总和,如在D后加入空白列后,计算d1+d2+d3的值。
在插入列时发现,使用录制宏后发现运行代码会变成插入三列,表格如下图所示,
Sub Macro2()
'
' Macro2 Macro
' 宏由 录制,时间: 2024/10/23
Columns("H:H").Select
Range("H3").Activate
Selection.Insert Shift:=xlShiftToRight
End Sub
Sub vba_add_column_sum()
Dim iCount As Long
Dim i As Long
Dim LastCol As Long
Dim varCol As Long
Dim starNo As Long
Dim mergeCount As Long
'求和单元格位于第几行
Dim sumCell
'某列最后一个有值的行号
Dim lastColunmVal As Long
'填充列变量
Dim fillColunmVar As String
'求和结束列变量
Dim endColunmVar
'总活动列数
LastCol = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column
MsgBox " 总活动列: " & LastCol
iCount = InputBox(Prompt:="插入多少列?")
starNo = InputBox(Prompt:="起始无关列数量? ")
mergeCount = InputBox(Prompt:="等差列数量? ")
sumCell = InputBox(Prompt:="求和单元格从第几行开始?")
'loop to insert new column(s)
'无关列3列,合并列3列,6列之后加新列就得+1
varCol = starNo + mergeCount + 1
For i = 1 To Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column
'For i = 1 To LastCol
'MsgBox "varCol的值为" & varCol & "mergecount" & mergeCount & "分割字母 " & Split(Cells(3, varCol - mergeCount - 1).Address, "$")(1)
'MsgBox " 最后一列: " & Range(Split(Cells(3, varCol - mergeCount - 1).Address, "$")(1) & "1")
'MsgBox " 最后一列: " & IsEmpty(Cells(3, varCol - 1))
If IsEmpty(Cells(3, varCol - 1)) Then
Exit For
End If
Columns(varCol).EntireColumn.Insert
'获取前一列有数据最后一行行号
lastColunmVal = Sheet1.Range(Split(Cells(3, varCol - 1).Address, "$")(1) & Sheet1.Rows.Count).End(xlUp).Row
'插入列列号
fillColunmVar = Split(Cells(3, varCol).Address, "$")(1)
'求和公式开始列号
starColunmVar = Split(Cells(3, varCol - mergeCount).Address, "$")(1)
'求和公式结束列号(等差3列,若求和只求等差前两列则-2,求三列的和则-1)
endColunmVar = Split(Cells(3, varCol - 2).Address, "$")(1)
'插入列后计算合并列和
'MsgBox "公式:" & "=SUM(" & fillColunmVar & sumCell & ": " & endColunmVar & sumCell & ")"
'求和列名
Range(fillColunmVar & 2).Select
Selection.Formula = Cells(1, varCol - mergeCount) & "求和"
'Cells(sumCell, varCol).Select
Range(fillColunmVar & sumCell).Select
'插入求和公式
'Selection.FormulaR1C1 = "=SUM(" & starColunmVar & sumCell & ": " & endColunmVar & sumCell & ")"
Selection.Formula = "=SUM(" & starColunmVar & sumCell & ": " & endColunmVar & sumCell & ")"
Range(fillColunmVar & sumCell).Select
'填充求和列
Selection.AutoFill Destination:=Range(fillColunmVar & sumCell & ":" & fillColunmVar & lastColunmVal), Type:=x1FillDefault
'计算等差值,下一循环插入列
varCol = varCol + mergeCount + 1
'MsgBox " Column Count: " & varCol
LastCol = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column
Next i
End Sub
如您所见,“A”列的每个单元格由两行组成。我需要将这两行合并为一行,并使用这两行的文本。如果我尝试加入单元格,它只保留来自上行的文本。 这里我上传了一个. xls文件的示例。
问题内容: 我有3个文本字段,其中用户键入表名和2个需要合并的列名。 如何将2列值合并(合并)为1? 我使用oracle 11g企业版 问题答案: 串联?
我有一个对象列表,我试图为每个对象指定三行,我使用的"Office Open Xml库"有以下例程: 然而,它弹出一个错误,说不能合并已经合并的单元格。 所以问题是如何在Excel中合并两个以上的单元格?
问题内容: 我有一个带有4列的(example-)数据框: 我现在想将B,C和D列合并/合并到新的E列,如本例所示: 我在这里发现了一个非常类似的问题,但这在A列的末尾添加了合并的列B,C和D: 感谢帮助。 问题答案: 选项1 使用和 选项2 使用分配和 选项3 最近,我喜欢第3个选项。 使用
mergeCells(string $scope, string $data [, resource $formatHandler]): self string $scope $excel->fileName("test.xlsx") ->mergeCells('A1:C1', 'Merge cells') ->output();
我有一个包含列的表:firstName、lastName和emailAddress
本文向大家介绍如何在R中合并列表?,包括了如何在R中合并列表?的使用技巧和注意事项,需要的朋友参考一下 当我们有多个列表但它们具有相似的数据类型时,我们可能想要合并或合并这些列表。这将有助于使用,因为我们可以使用一个列表名称执行计算,而不是将其应用于多个列表名称。我们可以借助mapply函数组合多个列表。 示例 请看以下列表- 现在假设,我们还有一个列表,即List3,然后可以按照如下所示的相同方
问题内容: 当使用“ ALTER TABLE tab ADD col”时,新列将添加到表的末尾。例如: 桌子会变成 但是,正如我的示例列的命名所暗示的那样,我实际上希望表最终像这样: 在COL_4之前使用COL_3。 除了从头开始重建表之外,是否还有任何标准的SQL可以完成工作?但是,如果没有标准的SQL,我仍然可以使用一些与供应商相关的Oracle解决方案,但是最好还是使用标准解决方案。 谢谢。