Excel 如何根据通用标签对元素表进行排序?
我有一个带有标题(时间和长度)的元素表,如下图1所示(请忽略突出显示的部分,将其视为“无填充”单元格)。 我想创建一个宏,将所有“时间”列连接到一个列中,并根据上面图1所示的相应时间值排列“长度”的值。为了说明它是如何工作的,您可以查看下面的图2,以查看在运行宏对表进行排序后表的最终排列 我对如何创建宏有一点想法-首先,使用时间列作为键,我将附加与键on对应的所有长度值(例如E列中的3.29E-04附加到D列中的“键”0),然后连接时间值,最后,根据附加到的键对长度值进行排序,得到最终的表,如图2所示。但是,我不知道如何将长度值附加到相应的键。所以有人能教我怎么做吗Excel 如何根据通用标签对元素表进行排序?,excel,vba,Excel,Vba,我有一个带有标题(时间和长度)的元素表,如下图1所示(请忽略突出显示的部分,将其视为“无填充”单元格)。 我想创建一个宏,将所有“时间”列连接到一个列中,并根据上面图1所示的相应时间值排列“长度”的值。为了说明它是如何工作的,您可以查看下面的图2,以查看在运行宏对表进行排序后表的最终排列 我对如何创建宏有一点想法-首先,使用时间列作为键,我将附加与键on对应的所有长度值(例如E列中的3.29E-04附加到D列中的“键”0),然后连接时间值,最后,根据附加到的键对长度值进行排序,得到最终的表,
如果没有,是否有其他方法可以更有效地实现表的排序?请告诉我如何做,谢谢。如果您真的想使用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结合,你不需要排序,你只需要查找与时间相对应的值我如何记录宏来排序数据?或者更确切地说,我应该执行哪些步骤来创建数组,然后使用循环来填充数据@纳雷什布人