Преобразовать диапазон в строку в VBA - PullRequest
0 голосов
/ 27 сентября 2011

Мне нужна помощь в преобразовании диапазона в пригодную для использования строку. Я не уверен на 100% в том, что мне нужно, потому что у меня мало опыта работы с VBA или VB.NET, но в конечном итоге я хочу взять несколько ячеек от B32 до J52 и выполнить функцию linest на C - J (как значения y) и B (как значение x).

Я думаю, что если я смогу научиться выдавать строку с надписью "Bxx:Jyy" Тогда я смогу сказать ей: linest(Cxx:Cyy, Bxx:Byy, true, false).

Есть ли более простой способ сделать это? В любом случае, все, что у меня есть сейчас, - это какой-то код для получения диапазона от пользователя (только что полученный от Google). Если бы кто-то мог просто помочь мне получить строку, как указано выше, я думаю, я справлюсь с остальными.

Dim oRangeSelected As Range
Set oRangeSelected = Application.InputBox("Please select a range of cells!", _
                     "SelectARAnge Demo", Selection.Address, , , , , 8)

Ответы [ 2 ]

4 голосов
/ 27 сентября 2011

В этом случае вы хотите, чтобы выбранный пользователем диапазон (не ранее существовавший выбор), поэтому

MsgBox oRangeSelected.Address

[Update] На самом деле, читая ваш вопрос более внимательно, вы можете использовать диапазоны как в LINEST, то есть эта подпрограмма получает пользовательский диапазон для X и Y, а затем передает LINEST. Результаты сохраняются в массиве MyArr, который может быть возвращен пользователю.

Sub Sample()
    Dim oRangeSelected1 As Range
    Dim oRangeSelected2 As Range
    Dim myArr()
    Set oRangeSelected1 = Application.InputBox("Please select a X range of cells!", "Select X Demo", Selection.Address, Type:=8)
    Set oRangeSelected2 = Application.InputBox("Please select a  Y range of cells!", "Select Y Demo", , Type:=8)
    If oRangeSelected1.Columns.Count + oRangeSelected2.Columns.Count > 2 Then
        MsgBox "Please select a single column range only"
        Exit Sub
    End If
    If oRangeSelected1.Cells.Count <> oRangeSelected2.Cells.Count Then
        MsgBox "Ranges are of different length"
        Exit Sub
    End If
    myArr = Application.WorksheetFunction.LinEst(oRangeSelected1, oRangeSelected2)
    MsgBox "slope is " & Format(myArr(1), "0.00") & " & intercept is " & Format(myArr(2), "0.00")
End Sub
3 голосов
/ 27 сентября 2011

Если вы используете Selected.Address, ваш диапазон будет отображаться в виде строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...