誰かが列のn番目ごとの項目を見つける方法を知りたい場合。この記事では、リストからn番目ごとのアイテムを返す方法を学習します。結果を見つけるためにVBAコードを使用します。

質問:マクロコードで列からn番目ごとの値を抽出したいのですが。あるシート/列から別のシート/列に値をプルしようとしています。 OFFSETのような多くの関数を使ってみましたが、結果を出すことができる式を理解できませんでした。

列Aの100個の値の例を見てみましょう。列Bの10 ^番目の値ごとに調べたいと思います。1に等しいセルA1から100に等しいセルA100までのサンプル値。以下は、列Aのデータのスナップショットです。

img1

結果を得るには、以下の手順に従ってVBエディターを起動する必要があります。[開発者]タブをクリックします。[コード]グループから、[VisualBasic]を選択します

img2

  • 以下のコードを標準モジュールにコピーします

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

B1:B10の範囲内のn番目ごとの項目を取得するには、数式は\ {= INDEXN($ A $ 1:$ A $ 100、10)}です。注:これは配列数式です。したがって、Ctrl + Shift + Endキーを同時に押す必要があります

img4

範囲A1:A100から7 ^ th ^ごとの値を取得するには;最後の引数を10から7に変更し、数式は\ {= INDEXN($ A $ 1:$ A $ 100、7)}

img5

になります。このようにして、1枚のシートからマスターシートにn番目ごとのアイテムを返すことができます。

他のシートの数式には、シート参照\ {= INDEXN(Sheet1!$ A $ 1:$ A $ 100、10)}が含まれます

img6

結論:上記のユーザー定義関数の助けを借りて、あるシートから別のシートまで、n番目ごとのアイテムを柔軟に見つけることができます。

image 48

_私たちのブログが気に入ったら、Facebookで友達と共有してください。また、TwitterやFacebookでフォローすることもできます。皆様からのご意見をお待ちしております。私たちの仕事を改善、補完、革新し、より良いものにする方法をお知らせください。 [email protected]_までご連絡ください