Como convertir funciones a VBA

Hola,

Me pueden, por favor ayudar a convertir esto a VBA?

=IFERROR(INDEX(C1:C3,MATCH(1,COUNTIF(A1,"*"&C1:C3&"*"),0)),"")

1 Respuesta

Respuesta
1

Previamente selecciona la celda en donde vas a poner la fórmula y ejecuta la macro.

Si tu fórmula es matricial ocupa esta

Sub Macro1()
'
    Selection.FormulaArray = _
        "=IFERROR(INDEX(R1C3:R3C3,MATCH(1,COUNTIF(R1C1,""*""&R1C3:R3C3&""*""),0)),"""")"
End Sub

si no es matricial, entonces esta

Sub Macro2()
'
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(INDEX(R1C3:R3C3,MATCH(1,COUNTIF(R1C1,""*""&R1C3:R3C3&""*""),0)),"""")"
End Sub

Ahora, si quieres el código vba para que haga lo de la fórmula, tendrás que explicarme con ejemplos reales qué esperas de resultado. Espero tus comentarios para hacerte la macro.

Hola Dante,

Gracias por la respuesta.

Si es matricial pero no quiero colocar formula en la hoja de excel, quiero que estos valores se coloquen al ejecurtar la macro.

Columna A                En columna B quiero            Columna C esta lo que se busca

xxxx Trazano              Trazano                               FORERUNNER

FORERNNER XXX    FORERUNNER                   Trazano

XXX GOFORM          GOFORM                             GOFORM

Hola Dante,

En caso que no me haya explicado, esto es lo que deseo:

En la columna A tenfo una lista de más de 600 renglones con descripción de llantas. Todas estas tienen la marca de la llanta en la desvripcion.

En la columna C tengo una lista con las marcas de las llantas.

Quiero que al dar click a un botón se llene la columna B con la marca de la llanta que encontró en la columna A.

Muchas gracias!

Hola Dante,

En caso que no me haya explicado, esto es lo que deseo:

En la columna A tenfo una lista de más de 600 renglones con descripción de llantas. Todas estas tienen la marca de la llanta en la desvripcion.

En la columna C tengo una lista con las marcas de las llantas.

Quiero que al dar click a un botón se llene la columna B con la marca de la llanta que encontró en la columna A.

 Aqui hay un ejemplo

http://blog.contextures.com/archives/2012/10/09/find-text-with-index-and-match/

Muchas gracias!

Esta es la macro. Revisa en la columna "C", que no haya celdas vacías.

Sub marcas()
'Por.DAM
    Columns("B").ClearContents
    u = Range("C" & Rows.Count).End(xlUp).Row
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        res = Evaluate("=INDEX(C1:C" & u & ",MATCH(1,COUNTIF(A" & i & ",""*"" & C1:C" & u & "& ""*""),0))")
        If Not IsError(res) Then
            Cells(i, "B") = res
        End If
    Next
End Sub

Por curiosidad, por qué no ocupas la fórmula?

¡Gracias! 

No uso la fórmula porque la comuna B tendrá más datos antes que las marcas.

Esto es incredible.

Muchisimas gracias.

Hola,

Esto ha funcionado perfectamente. Solo agregue condiciones y la macro es lenta.

Se puede mejorar?

Sub marcasunsh()
    Worksheets("Unsh").Select
    Columns("N").ClearContents
    u = marcas
    For I = 1 To Range("K" & Rows.Count).End(xlUp).Row
        res = Evaluate("=INDEX(marcas" & u & ",MATCH(1,COUNTIF(K" & I & ",""*"" & marcas" & u & "& ""*""),0))")
        If Not IsError(res) Then
            If res = "Chaoyang" Then
             Cells(I, "N") = "Trazano"
           Else
           Cells(I, "N") = res
           If res = "Trailer" Then
             Cells(I, "N") = "Westlake"
          Else
           Cells(I, "N") = res
          If res = "HR802" Then
             Cells(I, "N") = "HEADWAY"
          Else
           Cells(I, "N") = res
          If res = "KNIGHT AT" Then
           Cells(I, "N") = "GOFORM"
          Else
           Cells(I, "N") = res
            If res = "HR701" Then
             Cells(I, "N") = "HEADWAY"
            Else
           Cells(I, "N") = res
            If res = "VANTI TOURING" Then
             Cells(I, "N") = "CENTARA"
          Else
           Cells(I, "N") = res
           If res = "Vanti Winter" Then
           Cells(I, "N") = "CENTARA"
            Else
           Cells(I, "N") = res
           If res = "TERRENA A/T" Then
           Cells(I, "N") = "CENTARA"
            Else
           Cells(I, "N") = res
           If res = "COMMERCIAL" Then
            Cells(I, "N") = "CENTARA"
            Else
            Cells(I, "N") = res
           End If
          End If
         End If
        End If
       End If
      End If
     End If
    End If
   End If
  End If
    Next
End Sub

Podrías crear una nueva pregunta, puedes dirigirla a Dante Amor.

Añade tu respuesta

Haz clic para o