
Как подсчитать количество выбранных ячеек, независимо от их содержимого?
Есть два варианта использования. Мне сейчас нужен вариант использования 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