Contar el número de celdas seleccionadas

Contar el número de celdas seleccionadas

¿Cómo cuento el número de celdas seleccionadas, independientemente del contenido de la celda?

Hay dos casos de uso. Necesito el caso de uso 2 ahora mismo:

  1. Cuando hago una o varias selecciones, quiero saber cuántas celdas,
  2. Quiero seleccionar exactamente N celdas usando selecciones múltiples. Sigo haciendo y cambiando el tamaño de las selecciones hasta que el número (que debería estar activo en algún lugar de la pantalla) llega a N

Para el número 1, tengo una solución alternativa: seleccione una sola celda que contenga texto, copie (para que tenga un borde animado), luego haga sus selecciones, presione pegar y lea el recuento en la barra de estado.

Para el punto 2, no conozco una solución alternativa que no implique repetir la solución número 1 docenas de veces y luego presionar deshacer.

ingrese la descripción de la imagen aquí

Respuesta1

Para abordar el punto n.º 1, puede utilizar este VBa. ¿¡El problema es que no explicas cómo quieres ver este detalle!? Así que lo agregué como cuadro de mensaje.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim totalCells As Long
totalCells = Selection.Cells.Count

MsgBox (totalCells)
End Sub

Agregué VBa a la Hoja1. Ver también¿Cómo agrego VBA en MS Office?

Simplemente no seleccione todas las celdas, ya que lo hará a través de una excepción de desbordamiento.

ingrese la descripción de la imagen aquí

El problema es que la ventana emergente aparecerá cada vez, te sugiero que reemplaces

Hoja de trabajo secundaria privada_Cambio de selección (objetivo por valor como rango)

MsgBox (totalCells)

con

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

Respuesta2

La única forma en que se me ocurre hacer lo que quieres sería con VBA.

Si quisieras una función para poner esto en una celda, algo como esto funcionaría:

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

Puede volver a ejecutar la función presionando F9 para obtener la respuesta después de cada cambio de selección.

Respuesta3

Muchas gracias a todos. La información anterior puede tener algunos años, pero es exactamente lo que necesitaba hoy. En caso de que genere ideas para otra persona, así es como modifiqué lo anterior para mis necesidades. (Nuestro costo en realidad no es de $2 por hora, por supuesto. Pero ya entiendes la idea.) ¡Gracias!

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

información relacionada