O Excel encontra células formatando?

3

A função countif tem um argumento de critério - como especifico um critério baseado na formatação de células?

Eu tenho uma lista de perguntas de casa de matemática contendo números de perguntas por página (por exemplo, na linha da página 12, a linha conterá os números 17 a 32, cada um em sua própria célula) e quero marcar significados especiais usando formatação: perguntas difíceis serão em negrito, as obrigatórias terão fundo amarelo e, é claro, as células que contêm o número de perguntas difíceis e obrigatórias serão ousadas com fundo amarelo.

Agora, quero contar as perguntas e suas turmas: Dizer 16 perguntas nesta página, das quais 5 são difíceis, mas opcionais, 3 são obrigatórias, mas fáceis, e 2 são obrigatórias e difíceis?

É claro que eu poderia adicionar mais três linhas por página: uma serviria como sinalizador "Difícil" e uma serviria como sinalizador "Obrigatório". O terceiro seria 1 se ambas as bandeiras duras e obrigatórias estiverem ativadas. Mas eu quero que a planilha do Excel seja visualmente agradável, sem essa bagunça, e adicionar mais três linhas por página de lição de casa é feio e não-intuitivo.

Obrigado! Avi

P.S. Alternaitve métodos para resolver este problema será ótimo. Talvez eu esteja latindo na árvore errada ..

    
por Avi 05.07.2011 / 12:13

1 resposta

2

Até onde eu sei, o COUNTIF só aceita referências de células, números , strings e curingas (tudo o que pertence aos valores dentro das células, não aos formatos). Aqui estão algumas coisas que você pode tentar.

Opção 1: filtro de dados & SUBTOTAL

Você pode usar Filtros de dados junto com SUBTOTAL , como no exemplo abaixo. No entanto, isso só funciona com cores de plano de fundo e não com pesos de fonte. Em vez de usar negrito para perguntas difíceis, talvez você possa usar tons de amarelo e vermelho. No lado negativo, você teria que aplicar manualmente o filtro toda vez que quiser contar suas perguntas.

Opção 2: Função Personalizada

Public Function COUNTF(w As Boolean, h As Boolean, rng As Range) As Integer

Dim cHard, cMand, cBoth As Integer

For Each c In rng
    If c.Font.Bold Then cHard = cHard + 1
    If c.Interior.Color = RGB(255, 255, 0) Then cMand = cMand + 1
    If c.Font.Bold And c.Interior.Color = RGB(255, 255, 0) Then cBoth = cBoth + 1
Next c

If w And Not (h) Then
    COUNTF = cHard
ElseIf Not (w) And h Then
    COUNTF = cMand
ElseIf w And h Then
    COUNTF = cBoth
Else
    COUNTF = rng.Count - (cHard + cMand - cBoth)
End If

End Function

Para usar:

=COUNTF(a, b, B5:B13)

onde:
a & b pode ser TRUE ou FALSE ( 1 ou 0 )
B5:B13 contém as questões

exemplo:
Para contar todas as perguntas difíceis: =COUNTF(1, 0, questions)
Para contar todas as perguntas obrigatórias: =COUNTF(0, 1, questions)
Para contar perguntas difíceis não obrigatórias: =COUNTF(1, 0, questions)-COUNTF(1, 1, questions)

    
por 05.07.2011 / 20:24