VBA- 使用 If 函数连接单元格
VBA- Concatenate Cells with If function
我有一个代码 returns 我想要从查询中获得的所有数据。问题是 csv 格式分隔数据,甚至是带有逗号的帐户名称。对于每一行,A 列是帐户名称,后跟 11 个整数数据块(每行总共使用 12 个单元格)。幸运的是,对于带有逗号的帐户,结果只是增加了一个单元格(每行总共使用了 13 个单元格)。
我需要一个 IF-THEN 公式,如果该行中有 13 个使用的单元格,它将连接 A 列和 B 列,否则就不管了。 VBA 连接的新手给我带来了巨大的问题。
有什么建议吗?提前致谢。
嗯,只是从术语的角度来看,Excel公式和ExcelVBA不是一回事。
事实上,这里有很多人是公式专家,他们对 VBA 一无所知,反之亦然。
也就是说,您可以使用类似的东西:
=IF(COUNTBLANK(C1:N1)=0,A1&" "&B1,A1)
当然,假设您的数据如下所示:
使用起来会更方便:
=IF(N1="",A1,A1&" "&B1)
连接 Excel 公式和 VBA 非常简单。
只需将要连接的字符串与符号分开 &
如果我想连接A1和B1,我可以使用=A1&B1
,如公式所示。
如果我想添加一个 space,甚至是一个词,我可以将它作为字符串添加到它们之间:
=A1&" is way cooler than "&B1
编辑:
VBA:
Sub ConcatenateCells()
Application.ScreenUpdating = False
Dim FixRange As Range, c As Range
Set FixRange = Range("A1:A" & ActiveSheet.UsedRange.Rows.Count)
For Each c In FixRange
If InStr(c, ",") > 0 Then c = c & c.Offset(0, 1)
'You could also add a space between the two using c = c & " " & c.Offset(0, 1)
Next c
Application.ScreenUpdating = True
End Sub
我不知道你是否想在连接值后快速搜索数据,但如果你想这样做,你可以使用这个:
Sub ConcatenateAndScootCells()
Dim FixRange As Range, c As Range
Set FixRange = Range("A1:A" & ActiveSheet.UsedRange.Rows.Count)
For Each c In FixRange
If InStr(c, ",") > 0 Then
c = c & c.Offset(0, 1)
c.Offset(0, 1).Delete xlToLeft
End If
Next c
End Sub
仍然假设我的数据格式正确,前后对比如下:
最终编辑:
如果你绝对坚持计算使用的行数而不是简单地在 A 列中寻找逗号,那么使用这个:
Sub ConcatenateAndScootCells()
Dim FixRange As Range, c As Range
Set FixRange = Range("A1:A" & ActiveSheet.UsedRange.Rows.Count)
For Each c In FixRange
If Cells(c.row, Columns.Count).End(xlToLeft).Column = 13 Then
c = c & " " & c.Offset(0, 1)
c.Offset(0, 1).Delete xlToLeft
End If
Next c
End Sub
我有一个代码 returns 我想要从查询中获得的所有数据。问题是 csv 格式分隔数据,甚至是带有逗号的帐户名称。对于每一行,A 列是帐户名称,后跟 11 个整数数据块(每行总共使用 12 个单元格)。幸运的是,对于带有逗号的帐户,结果只是增加了一个单元格(每行总共使用了 13 个单元格)。
我需要一个 IF-THEN 公式,如果该行中有 13 个使用的单元格,它将连接 A 列和 B 列,否则就不管了。 VBA 连接的新手给我带来了巨大的问题。
有什么建议吗?提前致谢。
嗯,只是从术语的角度来看,Excel公式和ExcelVBA不是一回事。
事实上,这里有很多人是公式专家,他们对 VBA 一无所知,反之亦然。
也就是说,您可以使用类似的东西:
=IF(COUNTBLANK(C1:N1)=0,A1&" "&B1,A1)
当然,假设您的数据如下所示:
使用起来会更方便:
=IF(N1="",A1,A1&" "&B1)
连接 Excel 公式和 VBA 非常简单。
只需将要连接的字符串与符号分开 &
如果我想连接A1和B1,我可以使用=A1&B1
,如公式所示。
如果我想添加一个 space,甚至是一个词,我可以将它作为字符串添加到它们之间:
=A1&" is way cooler than "&B1
编辑:
VBA:
Sub ConcatenateCells()
Application.ScreenUpdating = False
Dim FixRange As Range, c As Range
Set FixRange = Range("A1:A" & ActiveSheet.UsedRange.Rows.Count)
For Each c In FixRange
If InStr(c, ",") > 0 Then c = c & c.Offset(0, 1)
'You could also add a space between the two using c = c & " " & c.Offset(0, 1)
Next c
Application.ScreenUpdating = True
End Sub
我不知道你是否想在连接值后快速搜索数据,但如果你想这样做,你可以使用这个:
Sub ConcatenateAndScootCells()
Dim FixRange As Range, c As Range
Set FixRange = Range("A1:A" & ActiveSheet.UsedRange.Rows.Count)
For Each c In FixRange
If InStr(c, ",") > 0 Then
c = c & c.Offset(0, 1)
c.Offset(0, 1).Delete xlToLeft
End If
Next c
End Sub
仍然假设我的数据格式正确,前后对比如下:
最终编辑:
如果你绝对坚持计算使用的行数而不是简单地在 A 列中寻找逗号,那么使用这个:
Sub ConcatenateAndScootCells()
Dim FixRange As Range, c As Range
Set FixRange = Range("A1:A" & ActiveSheet.UsedRange.Rows.Count)
For Each c In FixRange
If Cells(c.row, Columns.Count).End(xlToLeft).Column = 13 Then
c = c & " " & c.Offset(0, 1)
c.Offset(0, 1).Delete xlToLeft
End If
Next c
End Sub