Дана квадратная матрица. В текстовое поле вводим ее размерность n. Нужно транспонировать ее так, чтобы строка с номером n, стала столбцом с номером n, а столбец с номером n стал строкой с номером n.
У меня есть пример как транспонировать всю матрицу, а как можно для определенной строки и столбца, если можете подправьте мой исходник.
Private Sub CommandButton1_Click()
Dim m() As Byte
Dim m1() As Byte
n = Selection.Rows.Count
n1 = Selection.Columns.Count
ReDim m(1 To n, 1 To n1)
For i = 1 To n
For j = 1 To n1
m(i, j) = Selection.Cells(i, j).Value
Next
Next
For i = 1 To n
For j = 1 To n1
Selection.Cells(i, j) = m(j, i)
Next
Next
End Sub
транспонирование
Модератор: Naeel Maqsudov
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Это и есть единственно возможный способ транспонированияНужно транспонировать ее так, чтобы строка с номером n, стала столбцом с номером n, а столбец с номером n стал строкой с номером n.

Просто условие задачи сформулировано специально для тех, кто не знает "транспонирования".
(... Возможно также, что тот кто придумывал задачу, сам только что узнал смысл этого слова и в формулировке задачи решил непременно это подчеркнуть)
Если Вы вникните в работу вашего примера, то поймете, что он делает как раз то, что надо.У меня есть пример как транспонировать всю матрицу
Если хотите его можно переписать так, чтобы был 1 цикл и чтобы не использовался массив M. Или так, чтобы между SUB и END была только 1 строка кода.
А как это сделать, поделись если можно, я переделал , а транспонируется только для строка на столбец, а столбец не транспонируется в строку.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
8-( ) Так не бывает! Одно автоматически означает другое.транспонируется только для строка на столбец, а столбец не транспонируется в строку
Например
1 2 3
4 5 6
7 8 9
результат:
1 4 7
2 5 8
3 6 9
А как это сделать
Код: Выделить всё
n=selection.rows.count
if selection.columns.count <> n then exit sub 'нечего делать - матрица не квадратная
for i=1 to n
for j=i+1 to n
r=selection.cells(i,j).value
selection.cells(i,j).value=selection.vells(j,i).value
selection.vells(j,i).value=r
next
next