excel - 如何使用 VBA 宏向每个工作表添加连接列?
问题描述
我想制作一个 Excel VBA 宏,它添加一个列“A”,其中包含第 2 行的“B”“C”和“D”的串联,直到没有更多数据为止。然后宏将其应用于工作簿中的每个工作表。每张纸都有不同的列长。
我目前的代码如下:
Sub forEachWs()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
Call ConCat(ws)
Next
End Sub
Sub ConCat(ws As Worksheet)
With ws
Dim lr As Integer
lr = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row
Columns("A:A").Insert Shift:=xlToRight
Range("A2").Formula = "=CONCATENATE(RC[1],""."",RC[2],""_"",RC[3])"
Range("A2").AutoFill Range("A2:A" & lr)
Columns("A:A").AutoFit
End With
End Sub
此代码多次将连接列添加到第一个工作表。我该怎么做才能使其适用于工作簿中的所有工作表而不是重复应用到一张工作表?
解决方案
最终工作的代码是我通过 BigBen 编译的代码
Sub LoopOverEachColumn()
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
ConCat WS
On Error GoTo 0
Next WS
On Error GoTo 0
End Sub
Private Sub ConCat(WS As Worksheet)
Dim lr As Integer
lr = WS.Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row
WS.Columns("A:A").Insert Shift:=xlToRight
WS.Range("A2").Formula = "=CONCATENATE(RC[1],""."",RC[2],""_"",RC[3])"
WS.Range("A2").AutoFill WS.Range("A2:A" & lr)
WS.Columns("A:A").AutoFit
On Error GoTo 0
End Sub
我在最终的工作表上弹出了一个错误,因为它是空白的,所以我在那里抛出了一些错误以克服障碍,以防同事尝试使用它。
推荐阅读
- html - bootstrap 4:向上滚动时使粘性页脚消失
- python - 使用python标准库将本地+偏移时间转换为UTC时间
- php - 根据 Woocommerce 中的用户角色更改 COD 支付网关的默认订单状态
- azure - 使用自定义设置配置 Azure b2C 身份验证
- c - 为什么不在 C 中为 FIZZBUZZ 使用 while 循环?
- azure - Azure 负载均衡器日志分析
- visual-studio-app-center - CodePush CLI 迁移(到 AppCenter)
- coldfusion - ColdFusion 导出到 Excel
- python - 如何在 Pandas 中对数据框进行分组并将整个字段保留在输出中
- python - 检查数据框列以查看布尔值是否为真/假,如果为假,则仅对这些值进行地理编码