我有结构(表名:表2)表象下面这样:从每行选择一列在一个表中
使用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
由于每次迭代指向在一个范围内的对象的For循环;我正在考虑使用
rCurrRow.Columns(2)
将指向当前行的列#2,因此只打印列的值。 我的逻辑错位吗?
一个额外的问题:
为什么在MSDN的Excel参考指南描述列的属性;其中作为明确的“列”的使用显然需要参数
这里是我提到的链接: http://msdn.microsoft.com/en-us/library/office/ff197454(v=office.15).aspx
这太神奇了。像魅力一样工作。只需要注意,当我将For循环内的语句“strTemp = rCurrRow.Range(,2)”更改为“strTemp = rCurrRow.Range(0,2)”时,它还会打印标题行值“MajorVersion”。你能否请请遮住一些灯光。虽然接受答案。 – Ayusman 2014-09-02 16:32:27
'rCurrRow.Range(,2)'相当于'rCurrRow.Range(1,2)',它指向同一行和第二列。 0表示上面的行。 – Rory 2014-09-02 19:37:45
非常感谢。说得通。 – Ayusman 2014-09-03 04:18:22