Calcular una columna a partir del valor de otra mediante una macro.

Esto es lo mejor que se ha creado...

Tengo una columna Cant_Pallets, puede ser 2 o 3 o 5... Y necesito calcular otra Columna que contenga los números de pallets, ejemplo si Cant_pallets es 3, deben aparecer 1,2,3 en la columna calculada, pero los pallets se numeran consecutive o sea que si en la otra fila la celda Cant_pallet es 2 entonces aparece en la columna calculada 4,5 y así consecutivamente... Ejemplo

Cant_Pallets          Pallets# (columna calculada a partir del valor de Cant_pallets)

3                               1-2-3

2                                4-5

4                                6-7-8-9

1                                 10

1                                   11

3 Respuestas

Respuesta
1

Hay solo un detalla}e con tu requerimiento el "-" no se puede poner porque Excel lo interpreta como fecha y causa resultados inesperados, por ello lo cambie al signo "," como ves en la imagen

y esta es la macro

Option Base 1
Sub armar_pallets()
Set datos = Range("a1").CurrentRegion
With datos
    suma = WorksheetFunction.Sum(.Columns(1))
    r = .Rows.Count
    x = 1
    For i = 2 To r
        numero = .Cells(i, 1)
        ReDim matriz(numero)
            For j = 1 To numero
                matriz(j) = x
                x = x + 1
            Next j
            .Cells(i, 2) = Join(matriz, ",")
    Next i
    Set datos = Nothing
End With
End Sub

Hola James!

Cuando ejecuto la macro me da Type Mismach en la línea

ReDim matriz(numero)

Eso pasa porque hay un texto o un letra o una fecha en vez de un numero, la macro esta diseñada para comenzar a leer datos desde la celda a1, descartando el titulo en el ciclo for haciéndolo i=2, si tus datos no comienzan en a1 solo ajusta la primera línea range("a1") por la celda donde comienzan tus datos, lo ideal era que subieras un imagen de tus datos para adaptar la macro a ellos.

Ya vi eso, y lo modifique,  mis datos empiezan en la fila 3, la columna que tengo el numero de pallets es la R y la columna donde quiero poner los valores calculados es la V

James, ya estoy más cerca de lo perfecto, cambie los números de las columnas y funciono todo, solo queda en la columna calculada que sale la, delante de cada numero ej:, 2,3 o, 1

¿Algo así?

Option Base 1
Sub armar_pallets()
r = Range("r3").CurrentRegion.Rows.Count
Set DATOS = Range("r3").Resize(r, 1)
With DATOS
    suma = WorksheetFunction.Sum(.Columns(1))
    x = 1
    For i = 2 To r
        numero = .Cells(i, 1)
        ReDim matriz(numero)
            For j = 1 To numero
                matriz(j) = x
                x = x + 1
            Next j
            .Cells(i, 5) = Join(matriz, ",")
    Next i
    Set DATOS = Nothing
End With
End Sub

Sigue poniendo la "," delante de todos los números de la columna calculada.

Ej:   ,1,2

      ,3,4

Si no pusiste esta instrucción (en negritas), te va a generar un campo en blanco al principio de cada secuencia de números y por consiguiente te va a poner una coma al principio de la secuencia, es para decirle a Excel que la matriz va a empezar a partir de 1 y no de 0.

Option Base 1
Sub armar_pallets()

¿Y cómo pongo negritas dentro del código?

Hola James,

Buen día de viernes!

Disculpa tanta molestia, pero no he encontrado como poner negritas a la instrucción Option Base 1 dentro del código de VB para poder eliminar la coma inicial.

Aleida

Ni encontraras la forma, la línea la puse en negirtas para resaltar la instrucción que necesitas poner en la macro, ve la imagen donde aparece el codigo para que sepas donde va.

Respuesta
1

Te anexo la macro.

Cambia en esta línea el 3 por la fila donde comienzan tus datos

    For i = 3 To Range("R" & Rows.Count).End(xlUp).Row

El resultado te lo pondrá separado por guiones

Sub Cantidad_Pallets()
'Por Dante Amor
    For i = 3 To Range("R" & Rows.Count).End(xlUp).Row
        For j = 1 To Cells(i, "R").Value
            n = n + 1
            cad = cad & "-" & n
        Next
        Cells(i, "V").Value = "'" & Mid(cad, 2)
        cad = ""
    Next
    MsgBox "Fin"
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda
Respuesta

Eso lo debes hacer con macro fíjate si encuentras algo que pueda darte una idea en el link

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas