Como realizar función si con varias condiciones?

Tengo 3 columnas A1, B1, C1 y en la columna D1 necesito colocar que me de automáticamente que si:

A1>vacío entonces= Nuevo

B1>Vacío entonces=Regular

C1>Vacío entonces=Malo

Y si es que tiene algún numero por ejemplo en A1 y B1 me de Error en D1, adjunto foto ejemplo

3 respuestas

Respuesta

[Hola

Sugiero volver a explicar ya que o narrado no coincide con la imagen.

Abraham Valencia

Respuesta

Lo de A1=nuevo, B1=Regular, C1=Malo lo he entendido.

La parte del error según la imagen he supuesto que es que si hay 2 o 3 columnas con números ponga error.

Si es así he hecho esta función. La has de poner en un módulo para que funcione, si no sabes como hacerlo dejas un mensaje. N1 es la columna A,n2 la B y n3 la C.

Colocas los números 1 por 1. Puedes arrastrar la función, siempre y cuando los valores estén en la misma fila.

Public Function cantidad(n1 As String, n2 As String, n3 As String) As String
    cantidad = ""
    Dim i(3) As Integer
    i(0) = 0
    i(1) = 0
    i(2) = 0
    'Esta parte es para mirar si hay más de un numero
    If (n1 <> "") Then
        i(0) = 1
    End If
    If (n2 <> "") Then
        i(1) = 1
    End If
    If (n3 <> "") Then
        i(2) = 1
    End If
    '----------------------------------
    If ((i(0) + i(1) + i(2)) > 1) Then
        cantidad = "Error"
    Else
        If (i(0) > 0) Then
            cantidad = "Nuevo"
        End If
        If (i(1) > 0) Then
            cantidad = "Regular"
        End If
        If (i(2) > 0) Then
            cantidad = "Malo"
        End If
    End If
End Function
Respuesta

Con esta fórmula parece ser que funciona

=SI(A1<>"","Nuevo",SI(B1<>"","Regular",SI(C1<>"","Malo","")))

Saludos

Hola, la probé pero no funciona la opción que si hay 2 o 3 columnas con números ponga error.

Con esta macro se obtiene el resultado, deberá poner un botón y asignar la macro, va la imagen de la hoja como ejemplo y la macro para que la ponga en un Modulo del editor de Visual Basic

Cualquier cosa me comenta por favor. Saludos

Sub Resultado1()
'Busca datos
ultimaFila1 = Sheets("Hoja2").Range("A" & Rows.Count).End(xlUp).Row
Dim MiRango As Range
Set MiRango = ThisWorkbook.Sheets("Hoja2").Range("A1").CurrentRegion
MiRango.Select
        Dim Dato1 As String
        Dato1 = "Nuevo"
        Dim Dato2 As String
        Dato2 = "Regular"
        Dim Dato3 As String
        Dato3 = "Malo"
        For i = 1 To ultimaFila1 + 1
            If Sheets("Hoja2").Cells(i, 1) <> "" And Sheets("Hoja2").Cells(i, 2) <> "" And Sheets("Hoja2").Cells(i, 3) <> "" Then
                Sheets("Hoja2").Cells(i, 4) = "Error"
            ElseIf Sheets("Hoja2").Cells(i, 2) <> "" And Sheets("Hoja2").Cells(i, 3) <> "" Then
                Sheets("Hoja2").Cells(i, 4) = "Error"
            ElseIf Sheets("Hoja2").Cells(i, 1) <> "" And Sheets("Hoja2").Cells(i, 2) <> "" Then
                Sheets("Hoja2").Cells(i, 4) = "Error"
            ElseIf Sheets("Hoja2").Cells(i, 1) <> "" And Sheets("Hoja2").Cells(i, 3) <> "" Then
                Sheets("Hoja2").Cells(i, 4) = "Error"
            ElseIf Sheets("Hoja2").Cells(i, 1) <> "" Then
                Sheets("Hoja2").Cells(i, 4) = Dato1
            ElseIf Sheets("Hoja2").Cells(i, 2) <> "" Then
                Sheets("Hoja2").Cells(i, 4) = Dato2
            ElseIf Sheets("Hoja2").Cells(i, 3) <> "" Then
                Sheets("Hoja2").Cells(i, 4) = Dato3
            End If
        Next i
    Range("A1").Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas