Seleccionar solo un valor de una matriz

Tengo este problema ojala me puedan ayudar.
Tengo esta función algo así
=SI(A1=B1,C1,"")&SI(A1=B2,C2,"")&SI(A1=B3,C3,"")......)
Mi pregunta es como puedo poner todos los valores de B y de C en forma de matrices para no tener que poner uno por uno, pero que al final solo me de un valor que deseo.
Una idea seria
=SI(COINCIDIR(A1,B1:B3,0),                    pero de ahi ya no se como platearlo para que me de el valor que quiero.
Gracias de antemano

1 respuesta

Respuesta
1
Para lo que quieres crearía una función que realizase las comprobaciones.
Entra en el editor de Visual Basic (<Alt><F11>) y crea un módulo nuevo (opción módulo dentro del menú insertar).
Copia el siguiente código:
Option Explicit
Function funcionPumpkin7() As String
    Dim i As Long
    Dim aux As String
    aux = ""
    For i = 1 To ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Rows.Count
        If ActiveSheet.Cells(1, 1) = ActiveSheet.Cells(i, 2) Then   ' Si A1 = Bi...
            aux = aux & ActiveSheet.Cells(i, 3) ' Concatenamos Ci
        End If
    Next i
    funcionPumpkin7 = aux
End Function
Después sólo tendrás que escribir en cualquier celda la siguiente fórmula: "=funcionPumpkin7()" (sin las comillas, claro).
Ok más o menos me di una idea y si es lo que quiero pero ahora una aclaración más, yo di de ejemplo las columnas A B y C pero lo que necesito es que esos valores los lea desde excel por ejemplo.
=funcionPumpkin7("leer un valor desde excel","primera matriz en excel","segunda matriz en excel")
Ojala me puedas ayudar. Muchas gracias
Pues incluye al inicio de la función 3 preguntas. El código quedaría así:
Option Explicit
Function funcionPumpkin7() As String
    Dim i As Long
    Dim aux As String
    dim nomCeldaComparar as string
    dim nCol1 as integer
    dim nCol2 as integer
    ' Leemos la celda a comparar
    nomCeldaComparar=inputbox$("Celda a Comparar","Mi Funcion","")
    if nomCeldaComparar="" then exit function
    ' Leemos el número de columna (La B sería la 2, la E el 5 y la columna Z es la 26)
    do
        aux = inputbox$("Número de Columna 1","Mi Funcion","")
        if aux="" then exit function
        if isnumeric(aux) then nCol1 = val(aux):exit do
        msgbox "Debe teclear un número"
    loop
    ' Y la segunda columna
    do
        aux = inputbox$("Número de Columna 2","Mi Funcion","")
        if aux="" then exit function
        if isnumeric(aux) then nCol2 = val(aux):exit do
        msgbox "Debe teclear un número"
    loop
    aux = ""
    For i = 1 To ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Rows.Count
        If ActiveSheet.Cells(nomCeldaComparar) = ActiveSheet.Cells(i, nCol1) Then   ' Si A1 = Bi...
            aux = aux & ActiveSheet.Cells(i, nCol2) ' Concatenamos Ci
        End If
    Next i
    funcionPumpkin7 = aux
End Function
Un detallito más, no se si esto sea posible, por ejemplo en la función SI es algo así.
Los 3 si se suponen que son el mismo
=SI(prueba logica, valor si verdadero, valor si falso)
=SI(aqui se selecciona una celda directamente con el puntero en excel, tmbn se selecciona con el puntero, tmbn se selecciona con el puntero)
=SI(CV54=CX37,CY37,"")...
u otro ejemplo
=SI(AA1=AA2,AB2,"")
No se si me doy a entender
Espero no estés del otro lado de la pc pensando que lidias con un idiota je je
Gracias
No acabo de entender lo que quieres pero prueba a definir así la función:
Function funcionPumpkin7(ByVal celdaComparar As String, ByVal rangoComparado As Range, ByVal rangoSalida As Range) As String
    Dim i As Long
    Dim j As Long
    Dim aux As String
    ' Primero comprobamos que el rango comparado y el de salida tienen las mismas dimensiones
    If rangoComparado.Rows.Count <> rangoSalida.Rows.Count Or rangoComparado.Columns.Count <> rangoSalida.Columns.Count Then
        MsgBox "Los dos rangos de la función tienen diferente formato"
        Error 1
        Exit Function
    End If
    aux = ""
    For i = 1 To rangoComparado.Rows.Count
        For j = 1 To rangoComparado.Columns.Count
            If celdaComparar = rangoComparado.Cells(i, j) Then
                aux = aux & rangoSalida(i, j)
            End If
        Next j
    Next i
    funcionPumpkin7 = aux
End Function
De esta manera puedes llamar a la función pasándola los parámetros que necesites. Por ejemplo: =funcionPumpkin7(A1;B1:B9;C1:C9)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas