Страницы: 1
RSS
Формирование матрицы в соответствии со значениями ячеек таблицы
 
Здравствуйте. Всем Добра!

Имеем таблицу значений.
Нужно сформировать матрицу, в которой:
        1) столбцы соответствуют столбцам таблицы
        2) номер строки ячейки соответствует значению из таблицы.
(в примере: в исходной таблице в первом столбце значения 4,5,8 - значит мы заполняем 4,5,8 строку матрицы)
        3) значение ячейки равно количеству одинаковых значений в столбце исходной таблицы
(в примере: в исходной таблице в первом столбце значения не повторяются, значит в первом столбце матрицы матрицы все единички,
     а во втором столбце пятерка повторяется 2 раза, значит в матрице в пятой строке будет значение 2,
       а в третьем столбце 11 повторяется 3 раза, значит в матрице в 11 строке будет значение 3)

Прикрепил скрины: из лист1 надо сформировать лист2

С уважением, Андрей.
Изменено: Андрей Стрельцов - 10.09.2021 01:02:13 (стараюсь объяснить понятнее)
 
Адрей стрельцов, Вариант
Код
=ЕСЛИ(СЧЁТЕСЛИ(B$1:B$7;СТРОКА())=0;"";СЧЁТЕСЛИ(B$1:B$7;СТРОКА()))
 
Код
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
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
спасибо. у вас правильно работает?
 
пожалуйста, а к кому вопрос?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх