计算选定单元格的数量

计算选定单元格的数量

如何计算选定单元格的数量,而不考虑单元格内容?

有两种用例。我现在需要用例 2:

  1. 当我进行一个或多个选择时,我想知道有多少个单元格,
  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

相关内容