我有一个Excel文件,它看起来像......
在宏之后,这将是最终结果:
[
我想要读取列" 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
但它不能正常工作。
有人可以帮我这些吗?感谢。
答案 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)