以防万一您想知道某人如何找到列中的第n个项目。在本文中,我们将学习如何从列表中返回第n个项目。我们将使用VBA代码查找结果。

问题:我想使用宏代码从列中提取第n个值。我正在尝试将值从一个表/列拖到另一个表/列。我尝试使用许多功能(例如OFFSET),但无法找出可以得出结果的公式。

让我们以A列中100个值的示例为例,我们想找出B列中每10 ^ th个值。样本值从等于1的单元格A1到等于100的单元格A100;以下是A列中数据的快照:

img1

为了获得结果,我们需要按照以下步骤启动VB编辑器:单击“开发人员”选项卡。从“代码”组中,选择“ Visual Basic”。 *将以下代码复制到标准模块中

img2

要获得范围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

img3

获取范围A1:A100中的每7 ^个值;我们将最后一个参数从10更改为7,公式将为\ {= INDEXN($ A $ 1:$ A $ 100,7)}

img4

这样,我们可以将第n个项目从一张纸返回到主纸。

img5

其他工作表中的公式将包含工作表引用\ {= INDEXN(Sheet1!$ A $ 1:$ A $ 100,10)}

结论:在上述用户定义功能的帮助下,我们可以灵活地找出从一张纸到另一张纸的每n个项目。

img6

如果您喜欢我们的博客,请在Facebook上与您的朋友分享。您也可以在Twitter和Facebook上关注我们。我们希望收到您的来信,请让我们知道我们如何改进,补充或创新我们的工作,并为您做得更好。写信给我们[email protected]

image 48