Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Dúvidas sobre cálculos, funções simples e aninhadas, fórmulas matriciais, etc.
  • Avatar do usuário
  • Avatar do usuário
#11559
Boa tarde amigos,
Estou enviando a planilha pois tentei utilizar CONT.SE e CONT.SES, mas não consegui obter o resultado esperado.
Em uma determinada escala de serviços temos alguns funcionários que a cada dia são substituídos podendo ou não serem repetidos.
Preciso de uma fórmula que me dê a quantidade de dias que determinados funcionários trabalharam juntos e se possível os dias em que trabalharam.
#11560
Boa tarde!

Para retornar a quantidade de vezes, tente inserir a fórmula matricial abaixo na célula O2, e arraste para baixo:
Código: Selecionar todos
=SOMA(SE((SE(SEERRO(LOCALIZAR(J2;$C$2:$C$11&$D$2:$D$11&$E$2:$E$11&$F$2:$F$11&$G$2:$G$11&$H$2:$H$11)>0;0);1;0)>0)*(SE(SEERRO(LOCALIZAR(K2;$C$2:$C$11&$D$2:D$11&$E$2:$E$11&$F$2:$F$11&$G$2:$G$11&$H$2:$H$11)>0;0);1;0)>0)*(SE(SEERRO(LOCALIZAR(L2;$C$2:$C$11&$D$2:$D$11&$E$2:$E$11&$F$2:$F$11&$G$2:$G$11&$H$2:$H$11)>0;0);1;0)>0)*(SE(SEERRO(LOCALIZAR(M2;$C$2:$C$11&$D$2:$D$11&$E$2:$E$11&$F$2:$F$11&$G$2:$G$11&$H$2:$H$11)>0;0);1;0)>0);1;0))
Obs.: Só funciona com CTRL + SHIFT + ENTER.

Para retornar quais os dias, não pensei em outra forma que não por VBA (função personalizada); te atende?


[edit] Para adiantar, já fiz via VBA; estou anexando a aplicação.

Fórmula: = RetornaDia(Intervalo_Procura; Intervalo_Critérios; Intervalo_a_retornar)

Código:
Código: Selecionar todos
Function RetornaDia(Intervalo As Range, Critérios As Range, IntervaloRetorno As Range) As String
Dim cellInt As Range, cellCrit As Range
Dim Contador As Long
Dim linha As Long, Coluna As Long, Crit As Long
Dim TotalAcertos As Long
Dim EmBranco As Long
Dim TotalVírgulas As Long

For Crit = 1 To Critérios.Columns.Count
    If Critérios.Cells(1, Crit) = "" Then
        EmBranco = EmBranco + 1
    End If
Next Crit


Set Intervalo = Intersect(Intervalo, ActiveSheet.UsedRange)
Set IntervaloRetorno = Intersect(IntervaloRetorno, ActiveSheet.UsedRange)

For linha = 1 To Intervalo.Rows.Count
    For Coluna = 1 To Intervalo.Columns.Count
         For Crit = 1 To Critérios.Columns.Count
            If Intervalo.Cells(linha, Coluna) = Critérios.Cells(1, Crit) Then
                Contador = Contador + 1
                Exit For
            End If
        Next Crit
    Next Coluna
    If Contador = Critérios.Columns.Count - EmBranco Then
        TotalAcertos = TotalAcertos + 1
        If TotalAcertos = 1 Then
            RetornaDia = IntervaloRetorno.Cells(linha, 1)
        Else
            RetornaDia = RetornaDia & ", " & IntervaloRetorno.Cells(linha, 1)
        End If
    End If
        
Contador = 0
Next linha

'Contar vírgulas
TotalVírgulas = Len(RetornaDia) - Len(Application.WorksheetFunction.Substitute(RetornaDia, ",", ""))

If TotalVírgulas > 0 Then: RetornaDia = Application.WorksheetFunction.Substitute(RetornaDia, ",", " e", TotalVírgulas)

End Function
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord