簡體   English   中英

VBA-具有If功能的串聯細胞

[英]VBA- Concatenate Cells with If function

我有一個代碼可以返回查詢中我想要的所有數據。 問題是csv格式會分隔數據,即使是其中包含逗號的帳戶名也是如此。 對於每一行,列A是帳戶名,后跟11個整數數據塊(每行總共使用12個單元格)。 幸運的是,對於具有逗號的帳戶,結果僅是一個額外的單元格(每行總共使用了13個單元格)。

我需要一個IF-THEN公式,如果該行中有13個用過的單元格,它將連接A列和B列,否則就不用管它了。 剛接觸VBA會給我帶來很多問題。

有什么建議么? 提前致謝。

好吧,從術語的角度來看,Excel公式和Excel VBA並不是同一件事。

實際上,這里的很多人都是配方專家,對VBA一無所知,反之亦然。

話雖這么說,您可以使用類似:

=IF(COUNTBLANK(C1:N1)=0,A1&" "&B1,A1)

當然,假設您的數據如下所示:

圖片

使用起來會更容易:

=IF(N1="",A1,A1&" "&B1)

在Excel公式和VBA中進行串聯非常簡單。

簡單地分開,你希望與amperstand來連接字符串&

如果要串聯A1和B1,可以使用=A1&B1 ,如公式所示。

如果要添加空格,甚至是一個單詞,我都可以將它們作為字符串添加在它們之間:

=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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM