将值合并到一栏中

时间:2018-08-08 18:06:29

标签: vba excel-vba

我有一个宏,它将来自A列和B列的数据合并到C列中。

示例: 如果A1 = 1且B1 = 5,则A2 = 10,A3 = 7且B3 = 8。

因此,我们的C列将具有C1 = 1,C2 = 2,C3 = 3,C4 = 4,C5 = 5,然后将跳过6,然后C6 = 7,C7 = 8,然后将跳过9然后C8 = 10。

我当前的输出:

enter image description here

我们可以在这里看到A和B列是输入,我们希望在C列中输出

我的问题吗? 在我的C列中,我获取了正确的数据,但B099的写法是B99,A012的写法是A12,依此类推。我们如何避免这种情况?我想要C栏中的完整数字,例如B099和A012。

我的代码:

 Option Explicit
Private Sub CommandButton1_Click()
Dim rowNo, lastRow, Val1, Val2, Val3, first, last, i, j As Variant
rowNo = 1
lastRow = ThisWorkbook.Sheets("Sheet2").Range("A" & 
 ThisWorkbook.Sheets("Sheet2").Rows.Count).End(xlUp).Row
For i = 1 To lastRow
    first = ThisWorkbook.Sheets("Sheet2").Range("A" & i).Value
    last = ThisWorkbook.Sheets("Sheet2").Range("B" & i).Value
    Val1 = Mid(first, 2, 4)
    Val2 = Mid(last, 2, 4)
    Val3 = Left(first, 1)
    If IsEmpty(Range("B" & i)) = True Then
        ThisWorkbook.Sheets("Sheet2").Range("C" & rowNo).Value = first
        rowNo = rowNo + 1
    Else
        For j = Val1 To Val2
            ThisWorkbook.Sheets("Sheet2").Range("C" & rowNo).Value = Val3 & j
            rowNo = rowNo + 1

            Next j
        End If
        Next i

    End Sub

0 个答案:

没有答案