将过滤的数据复制到新的工作表

时间:2020-06-22 09:20:18

标签: excel vba

在下面过滤的范围内,我需要修改数据并使用Excel VBA将其复制到新工作表中。

  1. 从右侧获取低于参考值(例如:<= 9)的前3个(最大值)值,并将数据w.r.t复制到最小扇区代码。例如:在图中:9(右侧)以下的前3位是2586、1523、124。因此,最小扇区代码是5,将整行中9-5(扇区代码)的数据复制到新的工作表中。
  2. 类似地从左侧获取参考值(9)上方的前3个数据,并将数据w.r.t复制到最高扇区代码。例如:在图9上方的前3个(左侧)为1000,356,129,并从1中获取的数据的下面9-15复制数据。
  3. 参考值是动态的,将从单元格值中提供。

enter image description here

最终数据如下

enter image description here

我是VBA的新手,并且一直在学习。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

宏记录器是一个非常有用的工具,用于检索确定的操作的VBA代码,在功能区中的Developer-> RecordMacro中,执行操作并停止记录,然后您可以检查为记录的操作生成的代码。它不是最干净的代码,但是您可以在其中找到所需特定操作的代码行。 一旦您遇到了所尝试的代码的一个具体问题,就可以寻求有关更具体问题的帮助,而不是期望有人会为您编写代码。

希望有帮助

答案 1 :(得分:0)

从宏记录器中,要对一组值进行排序,它将检索以下代码:

Sub Macro2()
    ActiveWorkbook.Worksheets("Hoja1").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Hoja1").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Hoja1").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

您可以从此处开始。 尝试使用宏记录器,并记录导致所需输出量的用户操作。 您还可以尝试记录一些小步骤,以了解用户操作中记录的内容,以便随心所欲地使用。

尝试一下宏记录器,它是一个了不起的工具,如果您知道要对用户操作执行什么操作,则只需记录该操作,然后稍作修改即可。

希望有帮助。

相关问题