Имеем таблицу значений. Нужно сформировать матрицу, в которой: 1) столбцы соответствуют столбцам таблицы 2) номер строки ячейки соответствует значению из таблицы. (в примере: в исходной таблице в первом столбце значения 4,5,8 - значит мы заполняем 4,5,8 строку матрицы) 3) значение ячейки равно количеству одинаковых значений в столбце исходной таблицы (в примере: в исходной таблице в первом столбце значения не повторяются, значит в первом столбце матрицы матрицы все единички, а во втором столбце пятерка повторяется 2 раза, значит в матрице в пятой строке будет значение 2, а в третьем столбце 11 повторяется 3 раза, значит в матрице в 11 строке будет значение 3)
Прикрепил скрины: из лист1 надо сформировать лист2
Sub ML2()
Dim a, b, c&, r&, v, n&
a = ActiveSheet.UsedRange
ReDim b(1 To WorksheetFunction.Max(a), 0 To UBound(a, 2))
For r = 1 To UBound(b): b(r, 0) = r: Next
For c = 1 To UBound(a, 2)
v = a(1, c): n = 1
For r = 2 To UBound(a)
If a(r, c) = v Then
n = n + 1
Else
b(v, c) = n
If IsEmpty(a(r, c)) Then Exit For Else v = a(r, c): n = 1
End If
Next
If r > UBound(a) Then b(v, c) = n
Next
With Worksheets(2)
.Cells.ClearContents
.[a1].Resize(UBound(b), UBound(b, 2) + 1) = b: .Activate
End With
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!