Microsoft ExcelでVBAを使用して、すべてのn番目の項目を返します
誰かが列のn番目ごとの項目を見つける方法を知りたい場合。この記事では、リストからn番目ごとのアイテムを返す方法を学習します。結果を見つけるためにVBAコードを使用します。
質問:マクロコードで列からn番目ごとの値を抽出したいのですが。あるシート/列から別のシート/列に値をプルしようとしています。 OFFSETのような多くの関数を使ってみましたが、結果を出すことができる式を理解できませんでした。
列Aの100個の値の例を見てみましょう。列Bの10 ^番目の値ごとに調べたいと思います。1に等しいセルA1から100に等しいセルA100までのサンプル値。以下は、列Aのデータのスナップショットです。
結果を得るには、以下の手順に従ってVBエディターを起動する必要があります。[開発者]タブをクリックします。[コード]グループから、[VisualBasic]を選択します
-
以下のコードを標準モジュールにコピーします
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
B1:B10の範囲内のn番目ごとの項目を取得するには、数式は\ {= INDEXN($ A $ 1:$ A $ 100、10)}です。注:これは配列数式です。したがって、Ctrl + Shift + Endキーを同時に押す必要があります
範囲A1:A100から7 ^ th ^ごとの値を取得するには;最後の引数を10から7に変更し、数式は\ {= INDEXN($ A $ 1:$ A $ 100、7)}
になります。このようにして、1枚のシートからマスターシートにn番目ごとのアイテムを返すことができます。
他のシートの数式には、シート参照\ {= INDEXN(Sheet1!$ A $ 1:$ A $ 100、10)}が含まれます
結論:上記のユーザー定義関数の助けを借りて、あるシートから別のシートまで、n番目ごとのアイテムを柔軟に見つけることができます。
_私たちのブログが気に入ったら、Facebookで友達と共有してください。また、TwitterやFacebookでフォローすることもできます。皆様からのご意見をお待ちしております。私たちの仕事を改善、補完、革新し、より良いものにする方法をお知らせください。 [email protected]_までご連絡ください