Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
MS Excel 2003: Copie el valor de la columna B el número de veces indicado por el valor de la columna A
Este tutorial de Excel explica cómo escribir una macro para copiar un valor en una columna tantas veces como se indica (con capturas de pantalla e instrucciones paso a paso) a un valor en otra columna en Excel 2003 y versiones anteriores.
Pregunta: En Microsoft Excel 2003/XP/2000/97, si tengo una lista de cantidades en la columna A y una lista de nombres de productos en la columna B, ¿cómo puedo crear una macro para copiar los nombres de productos especificados el número de veces en la columna? ¿Una cantidad?
Entonces, en la columna C, enumeraría la cantidad de veces que el nombre del producto se da por cantidad en una fila.
R: Veamos un ejemplo.
Descargue la hoja de cálculo de Excel (que se muestra a continuación)
En nuestra hoja de cálculo, nuestras cantidades se enumeran en la columna A y los nombres de nuestros productos se enumeran en la columna B.
Para ejecutar una macro, seleccione Macros > Macros en el menú Herramientas.
Cuando aparezca la ventana de macros, seleccione la macro llamada CopyToColumnC y haga clic en el botón Ejecutar.
Cuando se complete la macro, aparecerá el cuadro de mensaje anterior.
Ahora debería ver aparecer el nombre del producto en la columna C, el número de veces basado en el valor de la columna Cantidad. En este caso, Mr. Clean apareció 2 veces, las toallas Bounty 5 veces y el detergente Tide 1 vez.
Puede presionar Alt+F11 para ver el código VBA.
codigo macro
El código de la macro se ve así:
Sub CopyToColumnC() Dim LRow As Integer Dim LQty As Integer Dim LProduct As String Dim LColCPosition As Integer Dim j As Integer Dim LStart As Integer Dim LEnd As Integer 'Search for values in column B starting at row 2 LRow = 2 'Copy values to column C starting at row 2 LColCPosition = 2 'Search through values in column B until a blank cell is encountered While Len(Range("B" & CStr(LRow)).Value) > 0 'Retrieve quantity and product name LQty = Range("A" & CStr(LRow)).Value LProduct = Range("B" & CStr(LRow)).Value 'Set start and end position for copy to column C LStart = LColCPosition LEnd = LColCPosition + LQty 'Copy product name the number of times that is given by the quantity For j = LStart To LEnd - 1 Range("C" & CStr(j)).Value = LProduct Next 'Update column C position LColCPosition = LEnd LRow = LRow + 1 Wend MsgBox "Column C has been populated." End Sub