Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何根据通用标签对元素表进行排序?_Excel_Vba - Fatal编程技术网

Excel 如何根据通用标签对元素表进行排序?

Excel 如何根据通用标签对元素表进行排序?,excel,vba,Excel,Vba,我有一个带有标题(时间和长度)的元素表,如下图1所示(请忽略突出显示的部分,将其视为“无填充”单元格)。 我想创建一个宏,将所有“时间”列连接到一个列中,并根据上面图1所示的相应时间值排列“长度”的值。为了说明它是如何工作的,您可以查看下面的图2,以查看在运行宏对表进行排序后表的最终排列 我对如何创建宏有一点想法-首先,使用时间列作为键,我将附加与键on对应的所有长度值(例如E列中的3.29E-04附加到D列中的“键”0),然后连接时间值,最后,根据附加到的键对长度值进行排序,得到最终的表,

我有一个带有标题(时间和长度)的元素表,如下图1所示(请忽略突出显示的部分,将其视为“无填充”单元格)。

我想创建一个宏,将所有“时间”列连接到一个列中,并根据上面图1所示的相应时间值排列“长度”的值。为了说明它是如何工作的,您可以查看下面的图2,以查看在运行宏对表进行排序后表的最终排列

我对如何创建宏有一点想法-首先,使用时间列作为键,我将附加与键on对应的所有长度值(例如E列中的3.29E-04附加到D列中的“键”0),然后连接时间值,最后,根据附加到的键对长度值进行排序,得到最终的表,如图2所示。但是,我不知道如何将长度值附加到相应的键。所以有人能教我怎么做吗


如果没有,是否有其他方法可以更有效地实现表的排序?请告诉我如何做,谢谢。

如果您真的想使用VBA进行此操作,那么基于您的数据设置与您在查询中的设置相同的假设:将以下代码添加到模块并运行它

Option Explicit

Sub SetNewTable()

    Dim oWS As Worksheet: Set oWS = ThisWorkbook.Worksheets("Sheet3")       ' Change the sheet name
    Dim iLR As Long: iLR = oWS.Range("N" & oWS.Rows.Count).End(xlUp).Row

    With oWS

        .Range("O3:O" & iLR).Formula = "=IFNA(VLOOKUP($N3,$D$3:$E$" & iLR & ",2,FALSE),0)"
        .Range("P3:P" & iLR).Formula = "=IFNA(VLOOKUP($N3,$F$3:$G$" & iLR & ",2,FALSE),0)"
        .Range("Q3:Q" & iLR).Formula = "=IFNA(VLOOKUP($N3,$H$3:$I$" & iLR & ",2,FALSE),0)"
        .Range("R3:R" & iLR).Formula = "=IFNA(VLOOKUP($N3,$J$3:$K$" & iLR & ",2,FALSE),0)"

    End With

End Sub

你试过录制宏吗?。。提示-您可以创建范围的2D数组,然后使用循环填充图1中的数据,您最多可以有多少对时间长度?@TheGridLock。。可以通过range.currentrigion覆盖任意数量的线对?它将是灵活的。一个简单的方法,我认为你应该使用power query或BI来获得所有唯一的时间,然后你甚至可以将它与vba结合,你不需要排序,你只需要查找与时间相对应的值我如何记录宏来排序数据?或者更确切地说,我应该执行哪些步骤来创建数组,然后使用循环来填充数据@纳雷什布人