
¿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:
- Cuando hago una o varias selecciones, quiero saber cuántas celdas,
- 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.
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.
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