Facebook Twitter Gplus Flickr Pinterest LinkedIn YouTube RSS
Home Excel vba Utilizar Buscar y Reemplazar en Excel con macros vba
formats

Utilizar Buscar y Reemplazar en Excel con macros vba

Twittear este post Compartir en Facebook

Una opción viable para aprender macros en Excel es utilizando la grabadora de macros, aunque la mayoría de las veces, las macros generadas se tendrán que modificar a nuestros propósitos.

La funcionalidad de Excel de buscar y reemplazar, es una de las herramientas más socorridas por los usuarios. Lo interesante radica cuando queremos adecuarlo a nuestras macros.

Si utilizamos la grabadora de macros para obtener el código de buscar, la macro que nos arrojaría sería:

Sub Macro1()
'
' Macro1 Macro
' Macro grabada el 18/11/2010 por Sergio A Campos H
'

'
Cells.Find(What:="EXCELeINFO", After:=ActiveCell, LookIn:=xlFormulas, _
  LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
  MatchCase:=False, SearchFormat:=False).Activate
End Sub

Si utilizamos la grabadora de macros para obtener el código de reemplazar, la macro que nos arrojaría sería:

Sub Macro2()
'
' Macro2 Macro
' Macro grabada el 18/11/2010 por Sergio A Campos H
'

'
Cells.Find(What:="EXCELeINFO", After:=ActiveCell, LookIn:=xlFormulas, _
  LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
  MatchCase:=False, SearchFormat:=False).Activate
  ActiveCell.Replace What:="EXCELeINFO", Replacement:="exceleinfo", LookAt _
  :=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
  ReplaceFormat:=False
  Cells.FindNext(After:=ActiveCell).Activate
End Sub

Como la manera de utilizar la herramienta de buscar y reemplazar es mediante un formulario, la grabadora de macros arroja el código de todas las opciones del formulario utilizado, pero realmente, a menos que sí necesitemos buscar algún texto con más exactitud, la macro se podrá sintetizar de manera que ocupemos menos espacio en memoria y sea más ágil.

Ejemplos de macros:

Sub Prueba_buscar()
Cells.Find(What:="EXCELeINFO", After:=ActiveCell).Activate
End Sub
'
Sub Prueba_reemplazar()
Cells.Replace What:="EXCELeINFO", Replacement:="exceleinfo"
End Sub
 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
46 Comments  comments 
  • Pingback: EXCELeINFO – Top 10 de publicaciones vistas en 2011 « EXCELeINFO – Excel vba e información

  • http://semillas-de-lino.blogspot.com semillas de lino

    Gran post. Gracias

  • pep

    y si por ejemplo tengo una cadena “abcd1hjj1h”, y quiero reemplazar (o borrar) únicamente los dos últimos elementos (1h), ¿como lo hago para que no me borre también los que están en medio?

    abcd1hjj1h –> abcd1hjj

    • sergioacamposh

      Utiliza la siguiente macro para eliminar los dos últimos dígitos:

      Sub test()
      largo = Len(ActiveCell)
      ActiveCell.Value = Left(ActiveCell.Value, largo – 2)
      End Sub

      Saludos !!

  • fofo

    si quiero que me muestre en un formulario digamos la categoria que esta en la columna b y muestre su codigo que esta en la columna a ? como seria?

  • fofo

    lo logre efectivamente incluso con un label1 en vez de textbox2 pero necesito que sea automatico es decir si se ingresa personal1 en textbox1 automaticamente en label 1 aprarece la edad intente poniendolo asi

    Private Sub TextBox1_Change()
    Dim nombre As String
    Dim Rango As Range
    Set Rango = Sheets(1).Range(“A1:B4″)
    nombre = Application.WorksheetFunction.VLookup(Me.TextBox1.Value, Rango, 2, 0)
    Me.Label1 = nombre
    End Sub

    donde textbox1 es donde sale el nombre y label1 sale la edad

  • sergioacamposh

    La cuestión aquí es que la macro se estará ejecutando cada vez que se captura un carácter, lo cual ocasionaría error desde el principio. Si deseas aún así utilizar ésta manera, puedes hacerle una modificación al código:

    Private Sub TextBox1_Change()
    Dim Nombre As String
    Dim Rango As Range
    On Error Resume Next
    Set Rango = Sheets(1).Range(“A1:B4″)
    Nombre = Application.WorksheetFunction.VLookup(Me.TextBox1.Value, Rango, 2, 0)
    Me.Label1.Caption = Nombre
    On Error GoTo 0
    End Sub

  • fofo

    que me recomenarias usar de manera que no tenga que presionar un boton para obtener el codigo… se podria utilizar el combobox como un activante de cambio? porque en realidad debo usar un combobox en vez de un textbox

    • fofo

      creo que lo logre mir loq ue hice:

      Private Sub UserForm_Initialize()
      Range(“A2″).Select
      Do While ActiveCell Empty
      ComboBox1.AddItem ActiveCell.Value
      ActiveCell.Offset(1, 0).Select
      Loop
      End Sub

      Private Sub ComboBox1_Change()
      Dim nombre As String
      Dim Rango As Range
      Set Rango = Sheets(1).Range(“A1:B4″)
      nombre = Application.WorksheetFunction.VLookup(ComboBox1, Rango, 2, 0)
      Me.Label1 = nombre
      End Sub

      utilizando los nombres por dfecto

  • fofo

    fofo :
    creo que lo logre mir loq ue hice:
    Private Sub UserForm_Initialize()
    Range(“A2″).Select
    Do While ActiveCell Empty
    ComboBox1.AddItem ActiveCell.Value
    ActiveCell.Offset(1, 0).Select
    Loop
    End Sub
    Private Sub ComboBox1_Change()
    Dim nombre As String
    Dim Rango As Range
    Set Rango = Sheets(1).Range(“A1:B4″)
    nombre = Application.WorksheetFunction.VLookup(ComboBox1, Rango, 2, 0)
    Me.Label1 = nombre
    End Sub
    utilizando los nombres por dfecto

    lo mando de nuevo porque no se mostraron unos caracteres por el font…

  • sergioacamposh

    Para llenar el combo no te sugiero el Do While, ya que si tuvieras algún espacio vacío te dejará fuera los demás datos.

    Te sugiero uses la siguiente manera para llenarlo:

    Private Sub UserForm_Initialize()
    Me.ComboBox1.RowSource = “A1:A4″
    End Sub

    Además de que son menos líneas y más sencillo.

  • fofo

    tenes toda la razon es ma sencillo y menos codigo menos consumo derecursos menos por consiguiente menos kbs de peso

  • john

    hola buen dia,
    quiesiera saber si se puede reemplazar solo una fila o solo una columna con ese comando
    o alguna forma de remplazar esto.
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.Find(What:=”60000″, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False, SearchFormat:=False).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveCell.Replace What:=”60000″, Replacement:=y, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.FindNext(After:=ActiveCell).Activate

    GRACIAS

    • john

      De manera mas simple …. solo cambiar una fila y no toda la hoja.
      Sub byr()
      Dim x As Variant
      Dim y As Variant

      x = InputBox(“buscar”)
      y = InputBox(“reemplazar por “)
      Cells.Replace What:=x, Replacement:=y

      End Sub

      • sergioacamposh

        Aquí lo que necesitas es que la búsqueda y el reemplazo se realice en el rango que tú quieras.

        En la parte que dice Cells.Replace … ahí nos indica que busque en todo el libro, pero si cambias algo así como Range(“A:A”).Replace … ahí sólo buscará en la columna A.

  • john

    Funciono perfecto, Gracias.

    Hasta ahora estoy aprendiendo sobre todo esto, creo que estare pasando por aca mas seguido,
    Saludos

    • sergioacamposh

      Son bienvenidos todos los apasionados de Excel !!

  • omninacho

    tengo 10 columnas con informacion y en tres de ellas teno nombre ap-paterno y ap-materno
    usando vba tengo textbox 1 2 y 3 como puedo buscar en la lista el nombre completo si lo tengo separado en 3 columnas?
    de antemano gracias por la ayuda

    • http://about.me/sergioacamposh sergioacamposh

      Te sugiero hacer una columna adicional donde concatenes los 3 datos, así tu búsqueda será mejor.

  • JORGE PALACIOS

    Hola quiero saber si me puedes ayudar es que tengo un formulario en el que tengo varios TextBox digamos nombre documento y varios datos personales, quiero poder llamar los datos por el textbox nombre y navegar como autocompletar para llegar a un dato especifico visualizado en un ListBox al dar click sobre el resultado del ListBox que me cargue los datos en los textbox que me permita modificarlos, me guarde los cambios o me permita eliminar .
    te agradezco la ayuda es que estoy varado en ese pedazo.

  • Rodolfo707

    Hola.
    No voy a dar “jaboncillo” acerca de lo buena que es la página, ya que es evidente.
    Llevo varios dias intentando el cambiar una fórmula por otra y he encontrado esta página, en la que con absoluta precisión se explica como hacer cambios en una celda. Pero estos cambios se refieren al contenido, no a la fórmula en sí misma.
    Por ejemplo, y a mosdo de demostración, necesitaría cambiar el contenido de una celda:
    =CARACTER(K7) por =CODIGO(K7). En el primer caso veríamos en la Celda “T” y una vez cambiado veríamos “56″.
    Si este proceso lo hago con la grabadora de macros el cambio se realiza correctamente, pero cuando ejecuto la macro ya no se realiza.

    Sub Macro1()

    ‘ Macro1 Macro
    ‘ Cambiar formula


    Cells.Replace What:=”Caracter”, Replacement:=”Codigo”, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    End Sub

    ¿Que es lo que puede ocurrir para que esto no funcione cuando se ejecuta la macro?.
    El metodo Range.Replace no tiene el parámetro LookIn (xlFormulas,xlValues,xlComments) que si tiene el método Range.Find. Pero con este método tampoco me localiza las celdas al ejecutar la macro, aunque si lo haya hecho al construir la macro con la grabadora de macros.

    ¿Alguna idea?

    Gracias por tu atención.

    • http://about.me/sergioacamposh sergioacamposh

      No siempre el código grabado con macros, servirá posteriormente y vale sólo tomar fragmentos del código y adecuarlo.

      Pero para este caso te recomiendo crear un macro que convierta la fórmula en texto para después hacer el reemplazo de tu texto. La macro sería esta:

      Sub Reemplazar()
      Dim FormulaOriginal As String
      Dim FormulaNueva As String
      FormulaOriginal = ActiveCell.FormulaLocal
      FormulaNueva = Application.WorksheetFunction.Replace(FormulaOriginal, 2, 8, “CODIGO”)
      ActiveCell.FormulaLocal = FormulaNueva
      End Sub

      Ya va de tu parte adecuarla a tus diferentes necesidades.

  • Rodolfo707

    Gracias por tu rapidísima respuesta.

    Como continuaba con la macro ya he hecho más o menos lo que me sugieres.
    La macro la ejecuto desde otro libro ya que me interesa guardar los cambios en una hoja de otro libro diferente.

    El esquema de la macro es el siguiente:

    Selecciono todo el rango ocupado para cada hoja del libro a analizar
    (“A1:” LibroAnalizar.Worksheets(NombreHoja).Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select)
    Despues para cada celda del rango compruebo si es formula
    If celda.HasFormula Then
    En el caso de que sea formula compruebo que tenga la función que quiero sustituir
    Texto = celda.FormulaLocal
    y si lo tiene lo sustituyo y actualizo el contenido de la celda
    R = ReemplazarTexto(Texto, TextoIni, TextoFin)
    celda.FormulaLocal = R
    finalmente cierro el libro salvando cambios
    LibroAnalizar.Save

    Funciona perfectamente.
    El único inconveniente es que tarda mucho más (y cuando digo mucho más, es mucho más) que la función integrada de Buscar/Reemplazar.

    Si lo consideras necesario limpio un poco el código, haciéndolo más genérico y os lo envio.

  • Rodolfo707

    Amplio el mensaje anterior:
    Para lo que necesito la macro de cambiar fórmulas es para saber en que celdas he realizado los cambios, o simplemente donde utilizo una determinada fórmula. Si no quisiera saber que celdas he cambiado sería suficiente la función integrada Buscar/Reemplazar de Excel, que si permitiera copiar el listado de celdas donde aparece una determinada cadena, haría innecesaria la macro.

    Gracias por tu ayuda otra vez.

    • http://about.me/sergioacamposh sergioacamposh

      Lo que pasa con la macro es que sólo valida que la celda tenga fórmula y independientemente de cuál sea, intenta realizar el reemplazo, pero cuando se topa con una fórmula que no sea CARACTER arroja error. La siguiente macro también valida que la función que tenga la celda sea CARACTER y si no es, no hace nada, y reduciendo así el tiempo de ejecución:

      Sub Reemplazar()
      Dim FormulaOriginal As String
      Dim FormulaNueva As String
      On Error Resume Next
      Range(“A1″).Select
      ActiveSheet.Range(Selection, Selection.End(xlDown)).Select
      For Each celda In Selection
      FormulaOriginal = celda.FormulaLocal
      Funcion = Mid(FormulaOriginal, 2, 8)
      If celda.HasFormula Then
      If Funcion = “CARACTER” Then
      FormulaNueva = Application.WorksheetFunction.Replace(FormulaOriginal, 2, 8, “CODIGO”)
      celda.FormulaLocal = FormulaNueva
      Else
      End If
      Else
      End If
      Next celda
      On Error GoTo 0
      End Sub

  • Rodolfo707

    Gracias. Perfecto.

  • Gonzalo

    Y si necesito buscar con un botón, dentro de una columna en particular, el texto que se ingresa en un cuadro de texto? Lo que necesito hacer es lo siguiente:
    Tengo una lista de nombres, apellidos, direcciones, telefonos, etc, y quiero buscar todos los que se llamen “Pedro”, por ejemplo, y que las demas filas, que no poseen el nombre pedro, que se oculten, y luego con otro boton volver a mostrar todas las filas de la hoja… Como seria? Soy nuevo en esto… Se nota? jajajaja

    • http://about.me/sergioacamposh sergioacamposh

      Para lo que necesitas me suena más bien a aplicar un filtro por nombre, no crees ??

      Cómo andas en tema de filtros ??

  • Gonzalo

    Estuve trabajando y pude hacer que funcione con esto:

    Private Sub BotonBuscar_Click()
    Captura.UsedRange.Rows.Hidden = True
    Range(“1:1″).Select
    Selection.EntireRow.Hidden = False
    Dim X As Integer
    For X = 2 To Captura.UsedRange.Columns.Count
    Captura.Cells(X, 2).Find(What:=TBuscar.Text).Select
    If TBuscar.Text = ActiveCell.Value2 Then
    Selection.EntireRow.Hidden = False
    Else
    MsgBox (“No se Encuentra”): Exit Sub
    End If
    Next
    End Sub

    Pero tengo unos temitas, los que hasta ahora descubri:
    1) Cuando no se encuentra lo que escribi, no me tira el MsgBox, sino que me sale error 91.
    2) Cuando busco por lo primero que me aparece en la columna, me marca todo bien, cuando busco por lo segundo me salen 2 de 3, y cuando busco a partir de ahi, me sale solo 1…

    Que podra ser???

    • http://about.me/sergioacamposh sergioacamposh

      Cuál es el objetivo de tu código, para qué usas Find dentro de un For ??

      Puedes comentar por favor.

  • Vicent

    hola sergio, tengoun problema con la macros, espero puedas apoyarme:
    deseo buscar dentro de una celda un nombre y crear una hoja con el nombre péro el problema es que el nombre trae titulos. Ejemplo:
    Dr. Alejandro Perez
    Ing. Antonio Perez

    Lo que deseo es que solamente quede
    Alejandro Perez
    Antonio Perez

    Y en base a ello crear nuevas hojas con su nombre.
    e usado este codigo pero no funciona

    nombre_docente = ActiveCell.FormulaR1C1
    t1 = ActiveCell.FormulaR1C1 = “=FIND(“” “”,activecell,1)”
    t2 = Len(nombre_docente)
    nombre_docente = Mid(nombre_docente, t1, t2)

    agradeceremucho el apoyo gracias

    • http://about.me/sergioacamposh sergioacamposh

      Hola Vincent:

      Te envío un código con lo que te logré captar. Lo adecúas a tus necesidades:

      Sub NuevasHojas()
      Dim NombreEncontrado As Range
      Pregunta = InputBox("Escribe el nombre a encontrar", "Nombre")
      If Pregunta = "" Then Exit Sub
      Set NombreEncontrado = Cells.Find(Pregunta, ActiveCell)
      t1 = Application.WorksheetFunction.Find(Pregunta, NombreEncontrado)
      t2 = Len(NombreEncontrado)
      ActiveWorkbook.Sheets.Add
      ActiveSheet.Name = Mid(NombreEncontrado, t1, t2)
      End Sub

  • Vicent

    Estimado Sergio muchas gracias, por el apoyo

  • Pingback: EXCELeINFO – Excel vba e información - Estadísticas del Blog 2012, lo más visitado

  • Pingback: EXCELeINFO – Excel vba e información - Buscar valores en Excel por tipo de texto o formato de celda con Ctrl + B

  • Fredes

    Hola,
    estoy intentando maquetar unos test para examen que estoy estudiando. Los test vienen sin formato y he ido adaptando macros que he encontrado en la red para ir haciendo ciertos arreglos.
    Me gustaría darle negrita a todas las líneas donde se encuentran las preguntas, pero no lo logro. Estaba tratando de hacerlo con el siguiente código, donde busca la palabra “PREGUNTA:” y con un código que encontré se supone que cambiaría la fila entera, pero no va. Igual es más complicado.

    Sub Buscarycambiaranegrita()

    currentCell.EntireRow.Font.Bold = True

    Do Until IsEmpty(ActiveCell)

    Cells.Find(What:=”PREGUNTA:”, After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate
    ActiveCell.Select

    Loop

    End Sub

    Hace unos días que empecé a ver macros porque no encontraba ninguna solución a través del menú de Buscar y Reemplazar, así que más perdido que un pulpo en un garaje. :)
    Saludos y gracias por este espacio que pones a nuestra disposición.

    • Sergio Alejandro Campos

      Suponiendo que las celdas donde tienes la palabra “PREGUNTA:” es el rango A1:A14 puedes utilizar el siguiente código. Sólo hay que modificar el rango que quieres validar.

      Sub Negritas()
      For Each Celda In Range("A1:A14")
      If Celda.Value = "PREGUNTA:" Then
      Celda.EntireRow.Font.Bold = True
      End If
      Next Celda
      End Sub

  • Fredes

    Muchas gracias. Lo probé pero no me funciona porque no te di toda la información. A parte de “Pregunta:” en la misma celda está todo el texto de la pregunta.

    Ejemplo:

    Pregunta: ¿Cuántos son los meses del año?

    Entonces tendría que encontrar “Pregunta:” más el resto. ¿Cómo se podría hacer, con un comodín que indique el resto del texto de la celda?
    If Celda.Value = (“PREGUNTA:” & cualquier otra cosa) Then ???
    Saludos y gracias de nuevo.

    • Sergio Alejandro Campos

      En la parte de la validación reemplaza la línea por esta:

      If Left(Celda.Value, 9) = "Pregunta:" Then

  • Fredes

    Perfecto.
    Un saludo!

  • Alex

    Hola estoy buscando una macro que reemplace valores de una columna reasignando valores consecutivos es decir:

    en mi columna inicial tengo valores del tipo ab_1, ab_2
    y a cada par definido por el (_1) y( _2) reemplazarlos por numeros consecutivos crecientes de tal forma que la columna de resultados sea
    ab_1 -> 1
    ab_1 -> 1
    ab_1 -> 1
    ab_2 -> 1
    ab_2 -> 1
    ab_2 -> 1
    ac_1 -> 2
    ac_1 -> 2
    ac_1 -> 2
    ac_2 -> 2
    ac_2 -> 2
    ac_2 -> 2

    ¡Gracias por tu ayuda!

  • José

    Estimado:

    Tengo un Excel, con datos “en blanco” (con un guión) en algunas columnas.

    Lo que requiero es saber como puedo rellenar esos datos, si se cumple la condición de que el valor de la columna anterior (misma fila) y de la siguiente (misma fila) es el mismo, vale decir:

    A B C D

    1) 3 – 3 4

    2) 2 – 1 4

    deseo que con la macro, quede así:

    A B C D

    1) 3 3 3 4

    2) 2 – 1 4

    • sergioacamposh

      Agradecería que me compartieras un ejemplo con lo que deseas.

  • alberto villafranca benitez

    Hola mi pregunta es como validar el codigo de busqueda

    Sub Prueba_buscar()
    Cells.Find(What:=”hola”, After:=ActiveCell).Activate
    End Sub

    si por ejemplo en mi hoja de excel no existe “hola” entonces que no me depure la macro, si no que me mande un mensaje de texto que me diga que no existe el dato.

    muchas gracias por la ayuda

Sistema Wordpress corriendo bajo... Windows Server 2008 R2
Follow

Get every new post delivered to your Inbox

Join other followers