Jump to content

Macro para reemplazar la formula si


Brian Velez

Recommended Posts

  • Silvia locked this topic

Archived

This topic is now archived and is closed to further replies.

Guest
This topic is now closed to further replies.
  • Crear macros Excel

  • Posts

    • Algo no encaja, porque el código que te he pasado funciona, si o si. Sube tu archivo  y explica con un ejemplo de que es lo que quieres hacer.
    • Hola, esta es mi solución Dim UltCol As Long With Datos If .Cells(fila, .Columns.Count) <> "" Then UltCol = .Columns(1).Column + .Columns.Count - 1 Else UltCol = .Cells(fila, .Columns.Count).End(xlToLeft).Column End If End With LastColumn_Table.xlsm
    • Buenas ,  soy nuevo en Macros  seguro que el codigo que te paso es muy largo  y no muy limpio y se podra hacer con la mitad de codigo (como te digo desconozco  muchos objetos de excel) , pero por aportar mi granito te paso mi codigo comentado en cada linea.  Espero que alguna idea puedas  aprovechar. Sub ultima_cada_fila() ' ejemplo con tabla nombre "Tabla1" , rango de la tabla $D$2:$AG$10 Dim rango, primera_celda, Ultima_Celda, primera_letra, ultima_letra, primer_n, Ultimo_n, c As String Dim numero_columnas, i, ii, b As Integer rango = Replace(Range("Tabla1").CurrentRegion.Address, "$", "") ' obtenemos el rango de la tabla eliminado los $ (D2:AG10) numero_columnas = Range(rango).Columns.Count ' numero de las columnas de la tabla (30) primera_celda = Mid(rango, 1, InStr(1, rango, ":") - 1) ' cogemos la direccion de la 1 celda, Desde donde trabajara el offset(D2) Ultima_Celda = Mid(rango, Len(primera_celda) + 2, Len(rango)) ' cogemos la direccion de la 2 celda(AG10) For i = 1 To Len(primera_celda) ' proceso para desglosar la letra y el numero de la 1 celda(D2) c = Mid(primera_celda, i, 1) ' analizamos caracter a caracter If IsNumeric(c) Then ' si el caranter es un numero .. primer_n = primer_n & c ' capturamos el numero(2) Else primera_letra = primera_letra & c ' capturamos el caracter(D) End If Next For i = 1 To Len(Ultima_Celda) ' proceso para desglosar la letra y el numero de la 2 celda(AG10) c = Mid(Ultima_Celda, i, 1) ' analizamos caracter a caracter If IsNumeric(c) Then ' si el caranter es un numero .. Ultimo_n = Ultimo_n & c ' capturamos el numero (1,0) Else ultima_letra = ultima_letra & c ' capturamos el caracter(A,G) End If Next b = 0 For i = primer_n To Ultimo_n - 1 ' proceso que recorre las filas b = b + 1 For ii = primer_n To numero_columnas + 1 ' proceso que recorre las columnas por cada fila If Range(primera_celda).Offset(b, ii - primer_n).Value = "" Then ' si la celda esta vacia .. Range(primera_celda).Offset(b, ii - primer_n).Select ' seleccionamos la celda vacia MsgBox Selection.Address ' muestra la direccion de la celda vacia Exit For ' salimos de la busqueda ya que encontremos la celda vacia End If Next Next Suerte.
    • Si, evalua siempre la fila 3, porque estaba haciendo pruebas con distintas filas a mano. Con tu codigo me hace lo mismo siempre me cuenta 33 que es el numero de columnas que tiene la Tabla. Yo creo que tiene que ver con el que es una Tabla como tal. He probado fuera de esa tabla con el mismo codigo (fila 38, que está fuera del rango de la Tabla) y si que funciona como se espera.   Gracias de todos modos
  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Privacy Policy