我有一个巨大的excel表,有13k行和8列。 我一直在寻找一种方法来粘贴回过滤列表上的可见行。 我甚至从mr.excel video mr. excel podcast
获得了一个代码 Sub PasteBack()
' Assumes the Filtered Sheet1 is active
Set DataToCopy = Sheet2.Range("A1").CurrentRegion
n = 2 ' index for range to copy from Sheet2 one row at a time, skipping headers
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row ' row 1 is header
If Not Rows(i).Hidden Then
DataToCopy.Offset(n - 1).Resize(1).Copy Cells(i, 1)
n = n + 1
If n > DataToCopy.Rows.Count Then Exit Sub
End If
Next i
End Sub
此代码的问题是,如果数据很多,excel就会变得没有响应。如果数据较少,它可以完美运行。 有人可以帮我将数据粘贴到筛选列表中
答案 0 :(得分:1)
处理变量数组中的字符串条件检查和字符串解析例程,这些例程已填充并返回到工作表 en masse ,这应该会显着加快速度。
Sub MergeCols()
Dim cell As Range, pos As Long
Dim vSTRs As Variant, v As Long
With Worksheets("Sheet2") '<-set this worksheet reference properly!
With .Range(.Cells(2, 2), .Cells(Rows.Count, 3).End(xlUp))
vSTRs = .Value2
For v = LBound(vSTRs, 1) To UBound(vSTRs, 1)
If CBool(InStr(1, vSTRs(v, 1), Chr(32))) Then
pos = InStrRev(vSTRs(v, 1), Chr(32))
vSTRs(v, 1) = Join(Array(Left(vSTRs(v, 1), pos - 1), vSTRs(v, 2), _
Mid(vSTRs(v, 1), pos + 1)), Chr(32))
ElseIf CBool(Len(Trim(vSTRs(v, 1)))) Then
vSTRs(v, 1) = Join(Array(vSTRs(v, 1), vSTRs(v, 2)), Chr(32))
End If
Next v
.Columns(1) = Application.Index(vSTRs, 0, 1)
End With
End With
End Sub
如果B列中有空白,我添加了不处理的条件。原件不需要这个,因为它是从B列顶部向下定义操作范围。我的例程将范围定义为从B2到C列的底部(从底部查看)。
答案 1 :(得分:0)
这是一个非常普遍的问题,当我在谷歌上搜索时,很多人都面临着这个问题。但我无法找到一个完美的解决方案。
p.code product_name packing price tax manufacturer
abc12 shampoo 100ml 49 5 abc pvt ltd
xyz98 powder 50gm 30 14.5 xyz pvt ltd
fdc321 conditioner 75ml 90 14.5 fdc
abc21 oil 100ml 49 5 abc pvt ltd
我刚刚放下几列和一行。但会有更多。 现在当我根据税收过滤列时,只显示5%的税项(或任何其他过滤条件)。
然后将条目复制到另一张表格进行编辑。当我尝试将其粘贴回过滤列表时,条目不会粘贴到可见的过滤行中。相反,它们甚至粘贴在过滤器隐藏的不可见行上。
我正在寻找一种方法来粘贴来自不同表格的数据
sheet1有完整的数据
sheet2包含从sheet1
中提取的数据这两张纸具有相同的列和顺序,因为sheet2的数据是使用过滤条件从sheet1的数据中提取的。
但是当我要粘贴数据时,sheet1的数据将使用相同的标准进行过滤,该标准用于提取sheet2的数据。所以不。 sheet1中的可见行数等于总数。 sheet2中的行数。
我希望这可以解释这种情况。如果仍有一些混乱,你可以看看这个Video demonstrating the problem