Excel VBA选择并集中的多个列
我有下面的电子表格,在VBA中,我想根据这些标题选择股票报价栏和参考价格栏 这是我到目前为止尝试过的,但是当我在范围内循环时,我只得到股票代码的值Excel VBA选择并集中的多个列,excel,vba,Excel,Vba,我有下面的电子表格,在VBA中,我想根据这些标题选择股票报价栏和参考价格栏 这是我到目前为止尝试过的,但是当我在范围内循环时,我只得到股票代码的值 Dim rngRefData As Range Set rngRefData = Union(rdWS.Range("1:1").Find("Ticker"), rdWS.Range("1:1").Find("Reference Price")) Set rngR
Dim rngRefData As Range
Set rngRefData = Union(rdWS.Range("1:1").Find("Ticker"), rdWS.Range("1:1").Find("Reference Price"))
Set rngRefData = Range(rngRefData, rngRefData.End(xlDown))
For Each Item In rngRefData
Debug.Print Item
Next Item
如何将整个“股票代码”列选择为最后一个值,将整个“参考价格”列选择为最后一个值。如果要在相邻范围内将这两列组合在一起,可以使用高级过滤器
如果要将相邻范围内的两列合并在一起,可以使用高级过滤器
可以根据数据行数调整范围大小 顺便说一句,像这样链接不是好的做法-如果你没有找到值,你的代码将出错,所以首先检查是否找到了术语
Sub x()
Dim rngRefData As Range
Dim r As Long
Dim r1 As Range, r2 As Range
r = rdWS.Range("A" & Rows.Count).End(xlUp).Row
Set r1 = rdWS.Range("1:1").Find("Ticker") 'and good practice to specify parameters
Set r2 = rdWS.Range("1:1").Find("Reference Price")
If Not r1 Is Nothing And Not r2 Is Nothing Then
Set rngRefData = Union(r1.Resize(r), r2.Resize(r))
End If
For r = 1 To rngRefData.Rows.Count
MsgBox rngRefData.Areas(1)(r) & " " & rngRefData.Areas(2)(r)
Next r
End Sub
可以根据数据行数调整范围大小 顺便说一句,像这样链接不是好的做法-如果你没有找到值,你的代码将出错,所以首先检查是否找到了术语
Sub x()
Dim rngRefData As Range
Dim r As Long
Dim r1 As Range, r2 As Range
r = rdWS.Range("A" & Rows.Count).End(xlUp).Row
Set r1 = rdWS.Range("1:1").Find("Ticker") 'and good practice to specify parameters
Set r2 = rdWS.Range("1:1").Find("Reference Price")
If Not r1 Is Nothing And Not r2 Is Nothing Then
Set rngRefData = Union(r1.Resize(r), r2.Resize(r))
End If
For r = 1 To rngRefData.Rows.Count
MsgBox rngRefData.Areas(1)(r) & " " & rngRefData.Areas(2)(r)
Next r
End Sub
请以这种方式尝试:
Set rngRefData = Union(rdWS.Range("1:1").Find("Ticker").EntireColumn, rdWS.Range("1:1").Find("Reference Price").EntireColumn)
Set rngRefData = Intersect(rdWS.UsedRange, rngRefData)
Debug.Print rngRefData.Address
rngRefData.Copy rdWS.Range("K1")
和评论:
'Set rngRefData = Range(rngRefData, rngRefData.End(xlDown))
请以这种方式尝试:
Set rngRefData = Union(rdWS.Range("1:1").Find("Ticker").EntireColumn, rdWS.Range("1:1").Find("Reference Price").EntireColumn)
Set rngRefData = Intersect(rdWS.UsedRange, rngRefData)
Debug.Print rngRefData.Address
rngRefData.Copy rdWS.Range("K1")
和评论:
'Set rngRefData = Range(rngRefData, rngRefData.End(xlDown))
这是可行的,但有没有办法让它打印出来作为股票代码,然后价格。例如:美国股票99.73 AACAY US Equity 6等…你不需要组合范围就可以做到这一点,只需在每一行中循环。我已将末尾的循环更改为遍历每一行并将结果放入消息框中,因此你毫无疑问可以根据情况进行调整。这是可行的,但有办法让它以股票代码的形式打印出来,然后按价格计算。例如:美国股票99.73 AACAY US Equity 6等…你不需要组合范围就可以做到这一点,只需在每一行中循环。我已将末尾的循环更改为遍历每一行,并将结果放在消息框中,因此毫无疑问,你可以根据需要进行调整。