2016-06-14 6 views
0

Я имею дело с 956 значениями в строке. У меня проблема с получением расстояний строк в каждом значении, потому что их слишком много. Есть ли способ достичь этого с помощью Excel-VBA с помощью кнопки?Как подсчитать количество значений?

Например: Это показывает количество раз, когда подсчитывается расстояние от строки.

enter image description here

ответ

3

Создать user-defined function in a module, с этим кодом:

Option Explicit 

Public Function Distance(matrix As Range, value As Long, rowCount As Long) 
    Dim cell As Range 
    Dim lastRow As Long 
    Dim result As Long 

    lastRow = 1 
    For Each cell In matrix 
     If cell.value = value Then 
      If cell.row - lastRow + 1 = rowCount Then result = result + 1 
      lastRow = cell.row 
     End If 
    Next 
    Distance = result 
End Function 

То есть весь код, что вам нужно. В настоящее время в листе поставить эту формулу в ячейку I5, т.е. верхний левый ячейку вашей таблицы результатов:

=Distance($A$1:$F$11, $H5, I$4) 

В зависимости от того, сколько строк в исходном таблице на левой стороне, вы, возможно, потребуется настроить 11 в этой формуле до некоторого большего числа, так что там указана вся таблица.

Затем скопируйте эту формулу в остальную таблицу вывода: перетащите/скопируйте по горизонтали, затем выберите эту строку и перетащите/скопируйте ее вниз.

В таблице также будет множество нулей. Чтобы избавиться от них, используйте cell formatting. Используйте этот пользовательский формат:

0;-0; 

Это результат (игнорировать, что вы видите точку с запятой в формуле, а те, которые связаны с моими региональными настройками):

enter image description here

Там нет необходимости кнопки. Результаты обновляются, как и любая другая стандартная формула.

Обратите внимание, что вы можете назвать свою функцию с другим именем, если хотите, но не забудьте сделать то же самое изменение в формулах, которые у вас есть на листе.