返回在Excel中使用VBA每个第n个项目
以防万一您想知道某人如何找到列中的第n个项目。在本文中,我们将学习如何从列表中返回第n个项目。我们将使用VBA代码查找结果。
问题:我想使用宏代码从列中提取第n个值。我正在尝试将值从一个表/列拖到另一个表/列。我尝试使用许多功能(例如OFFSET),但无法找出可以得出结果的公式。
让我们以A列中100个值的示例为例,我们想找出B列中每10 ^ th个值。样本值从等于1的单元格A1到等于100的单元格A100;以下是A列中数据的快照:
为了获得结果,我们需要按照以下步骤启动VB编辑器:单击“开发人员”选项卡。从“代码”组中,选择“ Visual Basic”。 *将以下代码复制到标准模块中
要获得范围B1:B10中的第n个项目,公式为\ {= INDEXN($ A $ 1:$ A $ 100,10)}注意:这是一个数组公式;因此,必须同时按下Ctrl + Shift + End键
Function INDEXN(InputRange As Range, N As Integer) As Variant ' returns every N-th item from InputRange' --- Comment ' select the desired target range for the function and' --- Comment ' enter as an array function with Ctrl+Shift+Enter.' --- Comment Dim ItemList() As Variant, c As Range, i As Long, iCount As Long i = 0 iCount = 0 ReDim ItemList(1 To InputRange.Cells.Count \ N) For Each c In InputRange i = i + 1 If i Mod N = 0 Then iCount = iCount + 1 On Error Resume Next ItemList(iCount) = c.Value On Error GoTo 0 End If Next c INDEXN = ItemList If InputRange.Rows.Count >= InputRange.Columns.Count Then INDEXN = Application.WorksheetFunction.Transpose(INDEXN) End If Erase ItemList End Function
获取范围A1:A100中的每7 ^个值;我们将最后一个参数从10更改为7,公式将为\ {= INDEXN($ A $ 1:$ A $ 100,7)}
这样,我们可以将第n个项目从一张纸返回到主纸。
其他工作表中的公式将包含工作表引用\ {= INDEXN(Sheet1!$ A $ 1:$ A $ 100,10)}
结论:在上述用户定义功能的帮助下,我们可以灵活地找出从一张纸到另一张纸的每n个项目。
如果您喜欢我们的博客,请在Facebook上与您的朋友分享。您也可以在Twitter和Facebook上关注我们。我们希望收到您的来信,请让我们知道我们如何改进,补充或创新我们的工作,并为您做得更好。写信给我们[email protected]