【问题标题】:Combining cell values with VBA将单元格值与 VBA 组合
【发布时间】:2020-10-07 18:42:53
【问题描述】:

我的数据集有数千行,组合从 1 个单元格到 15 个单元格不等。
每个组合都由一个空白单元格分隔。
我希望 VBA 在整个专栏中自动执行此过程。

第 2 列是我想做的。

Sub Concat()
Dim i As Integer, Sht As Worksheet, Str As String
i = 3
Set Sht = ThisWorkbook.Sheets(2)
Str = Sht.Cells(2, 1).Value
Do Until Sht.Cells(i, 1).Value = "999999"
    Do Until Sht.Cells(i, 1).Value = ""
        Str = Str & "-" & Sht.Cells(i, 1).Value
        i = i + 1
    Loop
    Sht.Cells(i, 1).Value = Str

    'Here i need the string to reset and start over
    ' at the cell under the cell where stringvalue was pasted

Loop
End Sub

【问题讨论】:

  • 为什么将单元格的值更改为Str,然后将Str的值更改为刚刚更改的单元格的值? Str = Sht.Cells(i, 1).Value
  • @K.Dᴀᴠɪs 我在这里深水...试图重新提出我的问题,你能帮我吗?

标签: excel vba


【解决方案1】:

找到这个可以连接前 4 个值的小代码。

Sub Concat()
    Dim i As Integer
    Dim Sht As Worksheet
    Dim Str As String
    Set Sht = ThisWorkbook.Sheets(1)
    Str = ""
    For i = 1 To 4
        Str = Str & Sht.Cells(i, 1).Value
        If Not i = 4 Then
            Str = Str & "-"
        End If
    Next i
    Sht.Cells(i, 2).Value = Str
End Sub 

您可以在此处对其进行调整以专门满足您的需要。

编辑:查找代码

Sub Concat()
    Dim i As Integer
    Dim Sht As Worksheet
    Dim Str As String
    Set Sht = ThisWorkbook.Sheets(1)
    Str = ""
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row + 1
        If Sht.Cells(i, 1).Value = "" Then
            Str = Left(Str, Len(Str) - 1)
            Sht.Cells(i, 2).Value = Str
            Str = ""
        Else
            Str = Str & Sht.Cells(i, 1).Value & "-"
        End If
    Next i
End Sub

【讨论】:

  • 感谢您的回答!问题是我的数据集有数千行,组合从 1 个单元格到 15 个单元格不等。每个组合由一个空白单元格分隔。我希望 VBA 在整个专栏中自动执行此过程。
  • 这超出了我的水平。我尝试运行您的代码,但出现以下错误:Str = Left(Str, Len(Str) - 1)
  • 该行只是删除最后一个字符。顺便说一句,没有“-”,它是Str = Left(Str, Len(Str) - 1)。只需复制粘贴整个方法并调用它。考虑到数据必须根据您的图片,在第 1 列中,并且您要组合的值带有一个空白单元格
  • 好吧,代码没有做任何事情。什么都没发生:/
  • 一定要在工作簿中添加脚本。不在模块或用户表单中。我在答案中添加了屏幕截图。您需要在左侧面板中双击“ThisWorkbook”,以便打开工作簿本身的脚本窗口。
【解决方案2】:
Sub Concat_numbers()

Dim i As Integer, Sht As Worksheet, Str As String
i = 3
Set Sht = ThisWorkbook.Sheets(1)
Str = Sht.Cells(2, 1).Value

Do Until Sht.Cells(i, 1).Value = "999999"


Do Until Sht.Cells(i, 1).Value = ""

Str = Str & "-" & Sht.Cells(i, 1).Value
i = i + 1
Loop


Sht.Cells(i, 2).Value = Str

i = i + 1
Str = Sht.Cells(i, 1).Value
i = i + 1

Loop

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    相关资源
    最近更新 更多