做了一个满足条件即导入数据的VBA宏:工作过程是,一个工作簿中的3个工作表(jxrwb、kstj,sheet1),通过网上查的代码,jxrwb中每一行的数据如果满足sheet1表中C5单元格条件值(关键词),就将该行数据导入kstj这个表中,jxrwb有19行数据,但是每次只能导入14行数据,为什么不是19行数据?
Sub 导入初始数据()
If MsgBox("确定要恢复数据吗 ?即将为您恢复备份时间为:" & Sheets("KSTJ").Range("l4") & " 的数据到当前表格! 请注意:恢复数据前会自动清空本表原来数据!", vbYesNo) = vbYes Then
Range("A7:s500").Select
Selection.ClearContents
Range("A7").Select
On Error Resume Next
Dim i As Integer, brr(), j As Integer, arr
j = Sheets("jxrwb").Range("a65536").End(xlUp).Row
arr = Sheets("jxrwb").Range("a2:n" & j)
k = k + UBound(arr)
ReDim Preserve brr(1 To 19, 1 To k)
For i = 1 To UBound(arr)
If arr(i, 2) Like Sheet1.Range("c5") Then
n = n + 1
brr(1, n) = arr(i, 1)
brr(2, n) = arr(i, 2)
brr(3, n) = arr(i, 3)
brr(4, n) = arr(i, 4)
brr(5, n) = arr(i, 5)
brr(6, n) = arr(i, 6)
brr(7, n) = arr(i, 7)
brr(8, n) = arr(i, 8)
brr(9, n) = arr(i, 9)
brr(10, n) = arr(i, 10)
brr(11, n) = arr(i, 11)
brr(12, n) = arr(i, 12)
brr(13, n) = arr(i, 13)
brr(14, n) = arr(i, 14)
brr(15, n) = arr(i, 15)
brr(16, n) = arr(i, 16)
brr(17, n) = arr(i, 17)
brr(18, n) = arr(i, 18)
brr(19, n) = arr(i, 19)
End If
Next
Sheets("KSTJ").Range("a7").Resize(n, 19) = Application.WorksheetFunction.Transpose(brr)
MsgBox " 数据恢复成功!"
Else
End If
End Sub
出问题的点可能有二:
Sheets("KSTJ").Range("a7").Resize(n, 19) =Application.WorksheetFunction.Transpose(brr)
改成:Sheets("KSTJ").Range("a7").Resize(19, n) = Application.WorksheetFunction.Transpose(brr)或者brr
还有一点是可能符合条件的行数确实只有14行呢,可以检查一下。
其余得看你具体数据了追问
不好意思我写错了,是14列,只能导入14列数据
追答那你检查一下n和k的值,可能这两个变量只循环到了14
追问从代码上看,真不知道为什么N和K为什么只循环到14?
追答arr = Sheets("jxrwb").Range("a2:n" & j)
改成:
arr = Sheets("jxrwb").Range("a2:S" & j)
太感谢!就是你说的那个问题,问题解决了!就是那个N,我把他看成我上面标的N了,晕死!