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

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?

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
- Compartir respuesta
