функция выбора вектора столбца из квадратной матрицы - PullRequest
2 голосов
/ 28 марта 2019

Привет, я новичок в VBA и создал несколько базовых функций, но следующее оказывается слишком сложным.

Я хочу создать функцию, которая преобразует квадратную матрицу в один из ее столбцов.

      colA  colB   colC
[1,]   1      2      3
[2,]   4      5      6
[3,]   7      8      9

Таким образом, getcol (A1: C3,2) выведет:

2
5
8

Я не уверен, возможно ли вывести диапазон из функции.

Он должен использоваться в функции Match массива, поэтому:

{Index(G1:G3,Match(2&2,getcol(A1:C3)&getcol(D1:F3),0))}

Код, который я пробовал, который, я уверен, не имеет смысла:

Function getcol(a As Range, b As Integer) As Range
getcol = Range(a).EntireColumn(b)
End Function

1 Ответ

0 голосов
/ 28 марта 2019

Это то, что вы пытаетесь? Я не тестировал с индексом / соответствием. Код ниже возвращает только соответствующий диапазон. Как вы используете это зависит от вас.

Option Explicit

Sub Sample()
    Dim rng As Range
    Dim truncRange As Range

    Set rng = Range("A1:C3")

    Set truncRange = getcol(rng, 2)

    If Not truncRange Is Nothing Then
        MsgBox truncRange.Address
    Else
        MsgBox "One of the parameters of getcol() is incorrect"
    End If
End Sub

Function getcol(a As Range, b As Integer) As Range
    Dim rowCount As Long

    '~~> Get the total rows in that range
    rowCount = a.Rows.Count

    '~~> Extract the range from relevant position
    Set getcol = Range(a.Cells(1, b), a.Cells(rowCount, b))
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...