Страницы: 1
RSS
Из двумерного массива взять определённую строку или определённый столбец
 
Всем доброго времени суток. У меня возникла до боли тривиальная проблема, с которой никогда не думал что смогу столкнуться. Перелопатил весь интернет, но так и не нашёл нужной мне инфы. Объясню вкратце в чём же дело.
Есть к примеру двухмерный массив заполненный числами, у которого n строк и m столбцов. Как из этого замечательного двухмерного массива, взять определённую строку или определённый столбец, желательно не создавая новую переменную?
 

Для любого столбца:

Код
[a1].Resize(UBound(Arr), 1).Value = WorksheetFunction.Index(Arr, 0, coll)

для строки:

Код
[a1].Resize(1, UBound(Arr, 2)).Value = WorksheetFunction.Index(Arr, rw, 0)

coll - № выгружаемого столбца;

rw - № выгружаемой строки.

 
Вы меня не совсем поняли: У меня есть двухмерный массив Pr_in Я хочу просуммировать все его строчки и поместить их результат в одномерный массив P_in. Для этого я написал следующую функцию Sum2. Но у меня блин ничего не работает.
Код
ReDim Pr_in(1 To N, 1 To Product(1).count) As Double ' Этот массив потом хитрым образом полностью заполняется

Dim P_in() As Double
P_in = Sum2(Pr_in) ' тут я пытаюсь суммировать но ничего не происходит, вылезает ошибка (can't assign to array )



Function Sum2(x() As Double) As Double

Dim i As Long
Dim j As Long
Dim Lenx As Long
Dim arr() As Double

For i = LBound(x, 2) To UBound(x, 2)
    arr(i) = 0
     For j = LBound(x) To UBound(x)
        arr(i) = arr(i) + x(j, i)
     Next j
Next i
Sum2 = arr
End Function


Что не так, не пойму никак  
 
Иван Лебедев, я понял то, что Вы сами написали:
Цитата
Иван Лебедев написал:
Как из этого замечательного двухмерного массива, взять определённую строку или определённый столбец,
И именно на этот вопрос я дал ответ.
 
Цитата
Иван Лебедев, я понял то, что Вы сами написали:
Иван Лебедев написал:
Как из этого замечательного двухмерного массива, взять определённую строку или определённый столбец,
И именно на этот вопрос я дал ответ.
Видимо я не совсем грамотно сформулировал вопрос. Второе сообщение с кодом более подробно описывает мою проблему. Спасибо Вам большое за первый ответ, он мне в любом случает пригодится, как новичку в VBA.
 
Иван Лебедев,  взять для чего?
то что выше решается просто
Код
ReDim Pr_in(1 To N, 1 To Product(1).count) As Double ' Этот массив потом хитрым образом полностью заполняется
 
Dim P_in() As Double
P_in=WorksheetFunction.Sum(Pr_in)
По вопросам из тем форума, личку не читаю.
 
А если бы к сообщению прикрепили файл-пример, то цены бы ему не было...
Читайте правила форума. Там и об этом, и о бездумном цитировании написано, и о многом другом.
 
Вариант заполнения одномерного массива суммами по строкам двумерного: примитивный перебор
Код
Sub qqq()
Dim Arr(), ArrOut, i As Long, j As Long, Summa As Double
    Arr = Range("B2:D4")
    ReDim ArrOut(1 To UBound(Arr))
    For i = 1 To UBound(Arr)
        For j = 1 To UBound(Arr, 2)
            Summa = Summa + Arr(i, j)
        Next
        ArrOut(i) = Summa
        Summa = 0
    Next
End Sub
 
Код
    For i = 1 To UBound(Arr)
        ArrOut(i) = WorksheetFunction.Sum(WorksheetFunction.Index(Arr, i, 0))
    Next

ну или
Код
    For i = 1 To UBound(Arr)
        ArrOut(i) = WorksheetFunction.Sum(WorksheetFunction.Index(Arr, 0, i))
    Next


в зависимости от того строку или столбец суммировать нужно.
Изменено: БМВ - 30.09.2020 07:40:52
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх