Contar o número de células selecionadas

Contar o número de células selecionadas

Como conto o número de células selecionadas, independentemente do conteúdo da célula?

Existem dois casos de uso. Preciso do caso de uso 2 agora:

  1. Quando faço uma ou várias seleções, quero saber quantas células,
  2. Quero selecionar exatamente N células usando seleções múltiplas. Continuo fazendo e redimensionando seleções até que o número (que deveria estar em algum lugar na tela) chegue a N

Para o número 1, tenho uma solução alternativa: selecione uma única célula contendo texto, copie (para que tenha uma borda animada), faça suas seleções, pressione colar e leia a contagem na barra de status.

Para o número 2, não conheço uma solução alternativa que não envolva repetir a solução alternativa número 1 dezenas de vezes e, em seguida, pressionar desfazer.

insira a descrição da imagem aqui

Responder1

Para abordar o ponto 1, você pode usar este VBa. O problema é que você não explica como quer ver esse detalhe!? Então eu adicionei como uma caixa de mensagens.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim totalCells As Long
totalCells = Selection.Cells.Count

MsgBox (totalCells)
End Sub

Adicionei o VBa à Plan1. Veja tambémComo adiciono VBA no MS Office?

Apenas não selecione todas as células, pois isso ocorrerá por meio de uma exceção de estouro

insira a descrição da imagem aqui

O problema é que o pop-up ocorrerá sempre, sugiro que você substitua

Subplanilha privada_SelectionChange (ByVal Target As Range)

MsgBox (totalCells)

com

Range("M1").Value = totalCells ' CHANGE THE RANGE TO THE CELL YOU WANT

Responder2

A única maneira que encontrei de fazer o que você deseja seria com o VBA.

Se você quisesse uma função para colocar isso em uma célula - algo assim funcionaria:

Public Function cellcount()
Application.Volatile
cellcount = Selection.Cells.count
End Function

Você pode executar novamente a função pressionando F9 para obter a resposta após cada alteração de seleção.

Responder3

Muito obrigado a todos. Suas informações acima podem ter alguns anos, mas são exatamente o que eu precisava hoje. Caso isso gere ideias para outra pessoa, veja como ajustei o acima para minhas necessidades. (Nosso custo não é na verdade US$ 2/hora, é claro. Mas essa é a ideia.) Obrigado!

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Const HOURS As Integer = 10        ' hours per cell
    Const COST As Integer = 2 * HOURS  ' dollars per cell
    Const SPACER As String = "   "

    Dim numCells As Long

    numCells = Selection.Cells.Count

    If numCells < 2 Then

        Application.StatusBar = False

    Else

        On Error Resume Next ' in case the selection is so large it causes an overflow error
        Application.StatusBar = "Cells: " & numCells _
                     & SPACER & "Hours: " & (numCells * HOURS) _
                     & SPACER & "Cost: " & FormatCurrency(numCells * COST, 0)

    End If

End Sub

informação relacionada