У меня есть таблица, структурированная (Table Name: Table2), как показано ниже:Выбор одного столбца из каждой строки в таблице
Использование VBA, я хочу, чтобы выбрать только одно значение столбца тока строка, повторяя каждую строку. Вот код, и я написал:
Function findColumnValue(strColCombIdent As String, strColumnName As String) As String
On Error Resume Next
Dim strRetResult As String
Dim wsMapMasterRefSheet As Worksheet
'Referes to the table Table2.
Dim loMapMaster As ListObject
Set wsMapMasterRefSheet = ThisWorkbook.Worksheets("Sheet3")
Set loMapMaster = wsMapMasterRefSheet.ListObjects("Table2")
'All rows of the table Table2
Dim rAllRows As Range
Set rAllRows = loMapMaster.DataBodyRange
'Holds one row from the databody range for processing.
Dim rCurrRow As Range
'Process data
Dim strTemp As String
For Each rCurrRow In rAllRows
strTemp = rCurrRow.Columns(2)
Debug.Print strTemp
Next rCurrRow
findColumnValue = strRetResult
End Function
Я надеялся получить результаты, как показано ниже (только значение столбца 2):
1.5
1.5
1.8
4
3
3
1
2
10
12
5
7
Вместо этого я в конечном итоге с чем-то вроде этого (Все значения из колонки № 2 и далее, для каждой строки обработки.)
1.5
0.045150462962963
1.5
4.52083333333333E-02
1.8
4.72685185185185E-02
4
0.168090277777778
3
3.1
3
8.47800925925926E-02
1
4.16666666666667E-02
2
8.33449074074074E-02
10
10.1.1.1
12
1.3.4.5
5
0.212511574074074
7
8.54166666666667E-02
Использование
strTemp = rCurrRow.Columns(1, 2)
вместо
strTemp = rCurrRow.Columns(2)
Причины Ошибка выполнения 1004
С каждой итерации указывает на объект диапазона в цикл; Я думал, используя
rCurrRow.Columns(2)
будет указывать на текущий столбец № 2 и, следовательно, распечатать только значение столбца. Неужели моя логика неуместна?
Еще один вопрос:
Почему MSDN Excel Справочное руководство описывает столбцы как свойство; где, как ясно использование «Столбцы» явно принимает параметры
Вот ссылка я говорил: http://msdn.microsoft.com/en-us/library/office/ff197454(v=office.15).aspx
это потрясающе. Работал как шарм. Просто обратите внимание, что когда я изменяю оператор «strTemp = rCurrRow.Range (, 2)» внутри Для цикла к «strTemp = rCurrRow.Range (0, 2)» он также печатает значение строки заголовка «MajorVersion». Не могли бы вы, пожалуйста, затенить свет. Принимая ответ, хотя. – Ayusman
'rCurrRow.Range (, 2)' эквивалентно 'rCurrRow.Range (1, 2)', который относится к той же строке и ко второму столбцу. 0 относится к строке выше. – Rory
большое спасибо. Имеет смысл. – Ayusman