Compartir a través de

Bucle que itera con letras

Anónimas
2022-11-18T22:15:32+00:00

Necesito un bucle que utilice letras del alfabeto en vez de números, algo así como

     **For n= “A” to “Z”**

     **instrucciones...**

     **Next n**

Ojalá se pueda hacer. Muchísimas gracias por su ayuda

Brenda023

Microsoft 365 y Office | Excel | Para la casa | Windows

Pregunta bloqueada. Esta pregunta se migró desde la Comunidad de Soporte técnico de Microsoft. Puede votar si es útil, pero no puede agregar comentarios o respuestas ni seguir la pregunta.

0 comentarios No hay comentarios
{count} votos

10 respuestas

Ordenar por: Muy útil
  1. Anónimas
    2022-11-21T15:30:11+00:00

    Gracias Héctor, con esta última genial propuesta, mi problema queda no solo resuelto, sino además, con máxima eficiencia. Te agradezco mucho, solo te pido disculpar por no haberte respondido antes, pero con esto de mundial mi casa es una locura.

    Brenda023

    0 comentarios No hay comentarios
  2. Anónimas
    2022-11-20T11:28:31+00:00

    En VBA suele ser más cómodo referirse a las celdas, por número de fila y de columna,, en lugar de por la referencia A1.

    0 comentarios No hay comentarios
  3. Anónimas
    2022-11-20T10:52:16+00:00

    Eso me resulta más entendible, no lo he probado pero a simple vista veo una sola copia de rango1 en rango2, después de corregido (totalmente) el rango1.

    Pero por ejemplo:

    Según mis pruebas, siendo [A500] la celda activa, el código...

    . . . 

    For n = 65 To 90

        ActiveCell.Range("A1:T17").Select

        Selection.Replace What:=("!") & Chr(n), Replacement:=("!") & Chr(n) & ("$")

        Selection.Copy

        ActiveCell.Offset(-33, 0).Range("A1").Select

        ActiveSheet.Paste

      Next n

    . . .

    ... efectúa una copia de [A500:T516] (fórmulas corregidas o no) a partir de [A467]*, en el ciclo 2º copia [A467:T483] y pega a partir de [A434],... 3º a partir de [A401],...[A368],..  ... etc.  produciéndose desbordamiento del límite superior de la hoja en el ciclo 80 ("P").

    ► *- Segun a que rango(s) de "la otra hoja" (¿... **!**H80?) hagan referencia las fórmulas de la hoja activa, obtendremos un resultado u otro (incluso errores de referencias si desborda el límite de la otra hoja).

    ► EDITADO: Sí. Seleccionar mediante ActiveCell.Range("A1:T17").Select sin entender bien cómo funciona (me refiero en general), puede llevar a imprevistos importantes.

    0 comentarios No hay comentarios
  4. Héctor Miguel 71,595 Puntos de reputación
    2022-11-19T23:28:05+00:00
    1. algunas "cosas" que suelen "ocultarse a la simple vista" son expresiones como esta: ActiveCell.Range("a1:t17").Select

    si la "ActiveCell" fuera la celda [C7] el rango que termina seleccionado es [C7:V23]

    1. en todo caso, para evitar el bucle por cada letra y aplicarlo solo una vez, se puede cambiar a: With ActiveCell.Range("a1:t17")
       For n = 65 To 90
      
         .Replace "!" & Chr(n), "!" & Chr(n) & "$"
      
       Next
      
       .Copy .Offset(-33)
      
      End With

    (claro, asumiendo que la activecell esta en la fila 34 o posterior ?)

    0 comentarios No hay comentarios
  5. Anónimas
    2022-11-19T22:56:10+00:00

    Sí Brenda. Te aseguro que esa aportación no es (con mucho) de las más ocultas que ha sabido descubrir y solucionar, hablar de Héctor son palabras mayores. Ese método de recorrer letras en un bucle se conoce por aquí desde hace tiempo, pero al menos yo no tengo la capacidad suficiente para "saber" lo que pretende un usuario si este no lo explica (lo de adivino no se me da).

    0 comentarios No hay comentarios