【问题标题】:copy & paste back into filtered list in excel复制并粘贴回excel中的过滤列表
【发布时间】:2015-07-26 20:22:55
【问题描述】:

我有一个巨大的 13k 行和 8 列的 Excel 表。 我一直在寻找一种方法来粘贴回过滤列表上的可见行。 我什至从 mr.excel 视频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 会变得无响应。如果数据较少,它会完美运行。 有人可以帮我将数据粘贴回过滤列表中

【问题讨论】:

  • + 加一是因为您认为 13K 行 × 8 列是“巨大的”。 :)
  • 您似乎根本没有使用过滤列表。您的意思是在确定字符串插入/连接方法之前,只需测试每个单元格是否存在空格字符?
  • 好吧 13k x 8 行 x 8 张是...
  • 非常抱歉粘贴了错误的代码。该代码用于将一个单元格的内容合并到另一个包含文本字符串的单元格中。现在更正了代码。 @jeeped 抱歉
  • 太多未回答的问题,无法继续。最重要的是:a) 什么是过滤器? b) 排序顺序是什么? c) 如果从 Sheet2 复制的行数多于可以复制的行数,您想如何处理多余的行? d) 典型的数据传输有多少行? e) 数据传输中的最大行数是多少?

标签: excel list filter


【解决方案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 列的底部(从底部向上看)。

【讨论】:

  • 抱歉昨晚贴错了代码,工作到很晚,太困了。我刚刚更正了从 mr.excels 播客获得的代码。我希望你能再看看它
  • 你能看看这个
【解决方案2】:

这是一个非常普遍的问题,当我在谷歌上搜索时,很多人都面临这个问题。但我无法找到完美的解决方案。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-03-06
    • 1970-01-01
    • 2021-07-02
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多