如何计算选定单元格的数量,而不考虑单元格内容?
有两种用例。我现在需要用例 2:
- 当我进行一个或多个选择时,我想知道有多少个单元格,
- 我想使用多项选择精确地选择 N 个单元格。我不断进行选择并调整大小,直到数字(应该在屏幕上的某个位置显示)达到 N
对于#1,我有一个解决方法:选择包含文本的单个单元格,复制(因此它有一个动画边框),然后进行选择,按粘贴,并读取状态栏中的计数。
对于#2,我不知道有什么解决方法不需要重复解决方法#1几十次然后按撤消。
答案1
为了解决第 1 点,您可以使用这个 VBa。问题是您没有解释您想如何查看此详细信息!?所以我将其添加为消息框。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim totalCells As Long
totalCells = Selection.Cells.Count
MsgBox (totalCells)
End Sub
我将 VBa 添加到 Sheet1。另请参阅如何在 MS Office 中添加 VBA?
不要选择所有单元格,否则将引发溢出异常
问题是每次都会弹出,我建议你更换
Private Sub Worksheet_SelectionChange(ByVal 目标作为范围)
MsgBox (totalCells)
和
Range("M1").Value = totalCells ' CHANGE THE RANGE TO THE CELL YOU WANT
答案2
我能想到的唯一能做到你想做的事情就是使用 VBA。
如果您想要一个函数将其放入单元格中 - 那么这样的操作就可以起作用:
Public Function cellcount()
Application.Volatile
cellcount = Selection.Cells.count
End Function
每次更改选择后,您可以按 F9 重新运行该功能以获取答案。
答案3
非常感谢大家。上面的信息可能已有数年历史,但正是我今天所需要的。为了给其他人提供一些想法,以下是我根据自己的需求对上述内容进行调整的方法。(当然,我们的成本实际上不是每小时 2 美元。但您明白我的意思。)谢谢!
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