根据列中的文本将单元格值复制并粘贴到特定单元格

时间:2017-11-06 16:08:11

标签: vba excel-vba excel

我有一个Excel文件,它看起来像......

enter image description here

在宏之后,这将是最终结果:

[2]

我想要读取列" B"的宏,并从列#34; C"中粘贴第一个国家/地区。在" A"的相同单元格中,在" B"中找到重复的单元格后,他从列#34; C"中复制下一个国家/地区,并且执行相同的操作我写了第一个国家等等。

我找到了类似问题的代码,并尝试将其改编为我的任务:

Sub GetText2()
Dim CellValue As String
Dim RowCrnt As Integer
Dim RowMax As Integer

With Sheets("Sheet1")   
  RowMax = .Cells(Rows.Count, "B").End(xlUp).Row
  For RowCrnt = 2 To RowMax
    CellValue = .Cells(RowCrnt, 2).Value
    If CellValue <> "" Then
      .Cells(RowCrnt, 1).Value = Cells(RowCrnt, 5)
    Else
      .Cells(RowCrnt, 1).Value = .Cells(RowCrnt - 1, 5).Value
    End If
  Next
End With
End Sub

但它不能正常工作。

有人可以帮我这些吗?感谢。

2 个答案:

答案 0 :(得分:0)

我认为这可以满足您的需求。您的代码似乎没有检查B列值是否已存在。

Sub x()

Dim r1 As Long, r2 As Long

r1 = 2: r2 = 2

Do While Cells(r1, 2) <> vbNullString
    If IsNumeric(Application.Match(Cells(r1, 2), Range(Cells(1, 2), Cells(r1 - 1, 2)), 0)) Then
        r2 = r2 + 1
    End If
    Cells(r1, 1).Value = Cells(r2, 3).Value
    r1 = r1 + 1
Loop

End Sub

答案 1 :(得分:0)

我认为它会解决你的问题。

@numba.njit
def addat(A,beg,ind,amount):
    u=A[beg:]
    for i in ind:
        u[i]+=amount

In [249]: %timeit addat(A,beg,ind,1)
3.13 µs ± 688 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
相关问题