如何使用Excel VBA输出特定数据并将其连接到新列中?
这是我的初始excel表: 我希望的输出是a列和B列的串联,如F列所示: 注意:我将手动添加标题“我的项目”。 代码: 执行代码后的输出:如何使用Excel VBA输出特定数据并将其连接到新列中?,excel,vba,Excel,Vba,这是我的初始excel表: 我希望的输出是a列和B列的串联,如F列所示: 注意:我将手动添加标题“我的项目”。 代码: 执行代码后的输出: 我尝试使用If Range(“A”&ActiveCell.row)”“跳过空行,但没有成功。此代码将循环遍历A列中包含内容的单元格,并将A列和B列的值连接到G列中 Option Explicit Sub Test() Dim xlCellA As Range Dim LstR As Long Set xlCellA =
我尝试使用
If Range(“A”&ActiveCell.row)”“
跳过空行,但没有成功。此代码将循环遍历A列中包含内容的单元格,并将A列和B列的值连接到G列中
Option Explicit
Sub Test()
Dim xlCellA As Range
Dim LstR As Long
Set xlCellA = Range("A2")
LstR = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
Do Until xlCellA.Row > LstR
If xlCellA.Value = "" Then
xlCellA.Offset(0, 6).Value = xlCellA.Value & ": " & xlCellA.Offset(0, 1).Value
End If
Set xlCellA = xlCellA.Offset(1, 0)
Loop
Set xlCellA = Nothing
End Sub
此代码将循环遍历A列中包含某些内容的单元格,并将A列和B列的值连接到G列中
Option Explicit
Sub Test()
Dim xlCellA As Range
Dim LstR As Long
Set xlCellA = Range("A2")
LstR = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
Do Until xlCellA.Row > LstR
If xlCellA.Value = "" Then
xlCellA.Offset(0, 6).Value = xlCellA.Value & ": " & xlCellA.Offset(0, 1).Value
End If
Set xlCellA = xlCellA.Offset(1, 0)
Loop
Set xlCellA = Nothing
End Sub
我个人认为最好将结果输出为字符串而不是公式。在循环中执行此操作(并添加
列a
不为空的条件)将导致宏lke:
Sub Test()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") '<-- Update
Dim lr As Long, i As Long
lr = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False
For i = 2 To lr
If ws.Range("A" & i) <> "" Then
ws.Range("F" & i) = ws.Range("A" & i) & ": " & ws.Range("B" & i)
End If
Next i
Application.ScreenUpdating = True
End Sub
子测试()
将ws设置为工作表:设置ws=ThisWorkbook.Sheets(“Sheet1”)”我个人认为最好将结果输出为字符串而不是公式。在循环中执行此操作(并添加列a
不为空的条件)将导致宏lke:
Sub Test()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") '<-- Update
Dim lr As Long, i As Long
lr = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False
For i = 2 To lr
If ws.Range("A" & i) <> "" Then
ws.Range("F" & i) = ws.Range("A" & i) & ": " & ws.Range("B" & i)
End If
Next i
Application.ScreenUpdating = True
End Sub
子测试()
将ws设置为工作表:设置ws=ThisWorkbook.Sheets(“Sheet1”)'无需在末尾设置xlCellA=Nothing。对象引用将随宏一起消失不幸的是,此方法没有生成我想要的输出。但我可以看出,这种方法很快就会对我有用。谢谢你抽出时间@Urderboy是正确的,但是,确保不再引用引用时删除引用是一种良好的编码实践needed@GlennG-我听到了,但我相信这是VBA与其他人不同的地方。并非所有的最佳实践都适用于所有地方。中的解决方案值得一读:)无需在结尾处设置xlCellA=Nothing
。对象引用将随宏一起消失不幸的是,此方法没有生成我想要的输出。但我可以看出,这种方法很快就会对我有用。谢谢你抽出时间@Urderboy是正确的,但是,确保不再引用引用时删除引用是一种良好的编码实践needed@GlennG-我听到了,但我相信这是VBA与其他人不同的地方。并非所有的最佳实践都适用于所有地方。中的解决方案值得一读:)