Macro: asignar varios valores a una celda

Como puedo hacer para que la celda A:1 tome valores de 1 a 5 y después ese valor copiar a las celdas B:1 para 1,... B:5 para 5

1 respuesta

Respuesta
1

H o l a:

No estoy seguro de lo que necesitas, pero te entrego esta macro, lo que hace es que si pones el número 4 en la celda A1, entonces en B1=1, B2=2, B3=3, B4=4; si pones en A1 el número 3, en automático te pone B1=1, B2=2, B3=3

Si es lo que necesitas pon la siguiente macro en los eventos de tu hoja

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        If Target = "" Or Target < 1 Or Not IsNumeric(Target) Then Exit Sub
        u = Cells(Rows.Count, Target.Column + 1).End(xlUp).Row
        'If u = Target.Row Then u = u + 1
        Range(Cells(Target.Row + 1, Target.Column + 1), Cells(u, Target.Column + 1)).ClearContents
        For i = 1 To Target
            Target.Offset(i - 1, 1) = i
        Next
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. Del lado derecho copia la macro

Hola!! gracias por la respuesta

es muy cercano a lo que necesito con dos salvedades

- que A1 rote solo automáticamente de 1 a 5, es decir sin tener la necesidad de poner 1, después 2, etc.. es decir que vaya rotando los valores de 1 a 5

- Cuando copie en la columna Bi, solo copie el dato que corresponde. Por ejemplo si cuando vaya rotando los números de 1 a 5 en A1 se copia solo en B1 cuando el A1 tome 1, se copie solo B2 cuando A2 tome 2, etc...

Te cuento un poco el contexto del proyecto: tengo un solver armado que esta vinculado a A1 y para no ir resolviendo individualmente porque tengo más de 5000 datos que asignar lo que necesitaba es que vaya rotando solo A1, resuelva el solver copie los datos y continue con el siguiente valor...

si queres te paso el excel

gracias

Entonces sería así:

Sub RotarNumero()
'Por.Dante Amor
    For i = 1 To 5
        [A1] = i
        Range("B" & i) = i
        'En esta parte se debería ejecutar el solver para continuar con el
 'siguiente número
    Next
End Sub

Si lo ejecutas, es tan rápido que solamente verás en la celda A1 = 5 y b1=1, b2=2, b3=3, b4=4 y b5=5


Espectacular! Es eso lo que necesitaba

Te agrego una consulta más: como hago para eliminar el cuadro de resultado final de solver

puse Solversolve UserFinish:=True

Pero me sigue apareciendo

Recuerda valorar esta respuesta.

uhh me habia salteado eso!1

ahi esta valorada

Dante, sabes como puedo eliminar el cuadro de resultado final del solver? ya que con

Solversolve UserFinish:=True

me sigue apareciendo 

Dante hay algo que me esta tirando error te copio la sintaxis que necesito

Range("G64").Value = 1
SolverOk SetCell:="$H$64", MaxMinVal:=2, ValueOf:=0, ByChange:="$H$64,$Y$4:$Y$58", Engine:=2, EngineDesc:="Simplex LP"
SolverOk SetCell:="$H$64", MaxMinVal:=2, ValueOf:=0, ByChange:="$H$64,$Y$4:$Y$58", Engine:=2, EngineDesc:="Simplex LP"
SolverResolver
Solversolve UserFinish = True, ShowRef = 0

SolverFinish KeepFinal:=1

Range("H64").Copy
Worksheets("Hoja10").Range("P4").PasteSpecial xlPasteValues
Application.CutCopyMode = False
Worksheets("Hoja10").Activate

Sheets("200512").Select

asi hasta el numero 55

si copio las 55 veces me sale, pero es un chorizo la formula

se te ocurre algo para resumirlo?

No tengo Solver, no podría probar lo que tienes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas