Подсчитать количество выбранных ячеек

Подсчитать количество выбранных ячеек

Как подсчитать количество выбранных ячеек, независимо от их содержимого?

Есть два варианта использования. Мне сейчас нужен вариант использования 2:

  1. Когда я делаю один или несколько выборов, я хочу знать, сколько ячеек,
  2. Я хочу выбрать ровно N ячеек, используя множественный выбор. Я продолжаю делать и изменять размер выборок, пока число (которое должно быть где-то на экране) не достигнет N

Для пункта 1 у меня есть обходной путь: выберите одну ячейку, содержащую текст, скопируйте (чтобы у нее была анимированная граница), затем сделайте выбор, нажмите «Вставить» и прочитайте количество в строке состояния.

Для пункта №2 я не знаю обходного пути, который не включал бы повторение обходного пути №1 десятки раз, а затем нажатие кнопки «Отменить».

введите описание изображения здесь

решение1

Чтобы решить пункт №1, вы можете использовать этот VBa. Проблема в том, что вы не объясняете, как вы хотите видеть эту деталь!? Поэтому я добавил ее как Message Box.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim totalCells As Long
totalCells = Selection.Cells.Count

MsgBox (totalCells)
End Sub

Я добавил VBa на Лист1. Также см.Как добавить VBA в MS Office?

Только не выбирайте все ячейки, так как это приведет к исключению переполнения.

введите описание изображения здесь

Проблема в том, что всплывающее окно будет появляться каждый раз, я бы посоветовал вам заменить

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

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

Связанный контент