在Excel中复制并粘贴回过滤列表

我有一个13k行和8列巨大的Excel表。 我一直在寻找一种方法将其粘贴回筛选列表上的可见行。 我甚至从mr.excelvideo先生得到了一个代码。 excel播客

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变得没有响应。 如果数据较less,它会工作得很好。 有人可以帮助我将数据粘贴回过滤列表

处理string标准检查和string分析例程在variables数组中被填充并全部返回到工作表应该显着加快速度。

 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列的底部(从底部看)。

那么这是一个非常普遍的问题,很多人一直在面对这个问题,当我search谷歌。 但我无法find一个完美的解决scheme。

 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%的税目(或任何其他过滤标准)。

我将这些条目复制到另一张纸上进行编辑。 当我尝试将其粘贴回筛选列表中时,条目不会粘贴到可见的筛选行中。 相反,即使在filter隐藏的不可见行上也会粘贴。

我正在寻找一种方法来粘贴从不同的工作表中的数据

sheet1具有完整的数据

sheet2具有从sheet1中提取的数据

两张纸都具有相同的列和顺序,因为使用过滤条件从sheet1的数据中提取sheet2的数据。

但是当我粘贴数据的时候,sheet1的数据将被用相同的标准进行过滤,这个标准被用来为sheet2提取数据。 所以没有。 sheet1中的可见行数将等于总数no。 sheet2中的行

我希望这可以解释这种情况。 如果仍然有一些困惑,你可以看看这个video展示问题