Volver cada enésimo elemento utilizando VBA en Microsoft Excel
En caso de que se esté preguntando cómo alguien puede encontrar cada enésimo elemento de una columna. En este artículo, aprenderemos cómo devolver cada enésimo elemento de una lista. Usaremos el código VBA para encontrar el resultado .
Pregunta: Quiero un código de macro para extraer cada enésimo valor de una columna. Estoy tratando de extraer valores de una hoja / columna a otra hoja / columna. Intenté usar muchas funciones como OFFSET pero no pude averiguar la fórmula que puede dar el resultado.
Tomemos un ejemplo de 100 valores en la columna A y queremos averiguar cada décimo valor en la columna B Los valores de muestra comenzando desde la celda A1 igual a 1 hasta la celda A100 igual a 100; la siguiente es la instantánea de los datos en la columna A:
Para obtener el resultado, debemos seguir los pasos a continuación para iniciar el editor de VB. Haga clic en la pestaña Desarrollador. Desde el grupo Código, seleccione Visual Basic
-
Copie el siguiente código en el módulo estándar
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
Para obtener cada n-ésimo elemento en el rango B1: B10, la fórmula es \ {= INDEXN ($ A $ 1: $ A $ 100, 10)} Nota: esta es una fórmula de matriz; por lo tanto, las teclas Ctrl + Shift + End deben presionarse juntas
Para obtener cada séptimo valor del rango A1: A100; cambiaremos el último argumento de 10 a 7 & la fórmula será \ {= INDEXN ($ A $ 1: $ A $ 100, 7)}
De esta forma, podemos devolver cada enésimo elemento de una hoja a la hoja maestra.
La fórmula en otra hoja contendrá la referencia de hoja \ {= INDEXN (Sheet1! $ A $ 1: $ A $ 100, 10)}
Conclusión: Con la ayuda de la función definida por el usuario anterior, podemos tener flexibilidad para encontrar cada enésimo elemento de una hoja a otra.
Si te gustaron nuestros blogs, compártelo con tus amigos en Facebook. Y también puedes seguirnos en Twitter y Facebook. Nos encantaría saber de usted, háganos saber cómo podemos mejorar, complementar o innovar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]