这是我在细胞E1:G14
中的数据Issue Name Ticker
F/c 90day euro$ futr dec15 Edz5 xcme
F/c h-shares idx fut jul15 Hcn5 xhkf
F/c mini msci emg mkt sep15 Mesu5ifus
F/c s&p/tsx 60 ix fut sep15 Ptu5 xmod
F/c russell 2000 mini sep15 Rtau5ifus
F/c swiss mkt ix futr sep15 Smu5 xeur
F/c us 10yr note(cbt) sep15 Tyu5 xcbt
F/c euro buxl 30y bnd sep15 Ubu5 xeur
F/c euro stoxx 50 sep15 Vgu5 xeur
F/c us ultra bond(cbt sep15 Wnu5 xcbt
F/c gasoline rbob fut sep15 Xbu5 xnym
F/c aust 10yr bond fut sep 15 Xmu5 xsfe
F/c ftse 100 idx fut sep15 Z u5 ifll
我现在的代码:
Sub copy_paste()
Worksheets(1).Activate
Dim ch As Long
Dim c As Variant
Dim d As Variant
Dim v As Range
Dim w As Range
Dim brow As Long
Dim crow As Long
Dim cc As Variant
Set w = Sheets(1).Range("E:E")
brow = w(w.Cells.Count).End(xlUp).Row
Set w = Range(w(2), w(brow))
Set v = Sheets(1).Range("G:G")
brow = v(v.Cells.Count).End(xlUp).Row
Set v = Range(v(2), v(brow))
For Each d In w
d = d.Text
If InStr(1, d, "mini") Then
For Each c In v
bbv1 = " QR "
bbv2 = " HCPI "
c = Mid(c, 1, 5) & " <INDEX>" & bbv2 '& c.Offset(0, 3)
Debug.Print (c)
Next c
End If
Next d
End Sub
我从这半代码中得出的结论如下:
Edz5 <INDEX> HCPI
Hcn5 <INDEX> HCPI
Mesu5 <INDEX> HCPI
Ptu5 <INDEX> HCPI
Rtau5 <INDEX> HCPI
Smu5 <INDEX> HCPI
Tyu5 <INDEX> HCPI
Ubu5 <INDEX> HCPI
Vgu5 <INDEX> HCPI
Wnu5 <INDEX> HCPI
Xbu5 <INDEX> HCPI
Xmu5 <INDEX> HCPI
Z u5 <INDEX> HCPI
Edz5 <INDEX> HCPI
Hcn5 <INDEX> HCPI
Mesu5 <INDEX> HCPI
Ptu5 <INDEX> HCPI
Rtau5 <INDEX> HCPI
Smu5 <INDEX> HCPI
Tyu5 <INDEX> HCPI
Ubu5 <INDEX> HCPI
Vgu5 <INDEX> HCPI
Wnu5 <INDEX> HCPI
Xbu5 <INDEX> HCPI
Xmu5 <INDEX> HCPI
Z u5 <INDEX> HCPI
该过程循环显示每个问题名称,其中两个符合mini
条件,因此以所需格式打印到即时控制台。现在我想执行另一个与上面相同的for循环,除了处理不同的标准:ix
而不是mini
,如果任何问题名称都不符合这些条件我想要{{1} }语句来处理剩余的问题名称。
Elseif
任何不代表和索引的商品未来应该打印为If InStr(1, d, "ix") Then
For Each c In v
bbv1 = " QR "
bbv2 = " HCPI "
c = Mid(c, 1, 4) & " <INDEX>" & bbv2 & c.Offset(0, 3)
Debug.Print (c)
Next c
End If
Elseif
For Each c In v
'ch = DDEInitiate("winblp", "bbk")
bbv1 = " QR "
bbv2 = " HCPI "
c = Mid(c, 1, 5) & " <INDEX>" & bbv2 '& c.Offset(0, 3)
Debug.Print (c)
Next c
End If
`The syntax may be wrong on the Elseif
我怎么还能弄清楚如何在这些条件下切换循环。如何在If Xbu5 <CMDTY> HCPI
方法中包含OR条件并消除前两个for循环中的一个?
最终预期结果应为:(请注意InStr()
指数的mini
条件
c = Mid(c, 1, 5)
答案 0 :(得分:0)
我不确定我是否完全遵循,但我认为您可以通过将Instr
测试置于循环中并对c
进行条件分配来解决此问题,而不是尝试“切换”循环或以其他方式构建三个不同的循环。
For Each d In w
d = d.Text
For Each c In v
bbv1 = " QR "
bbv2 = " HCPI "
If InStr(1, d, "mini") Then
c = Mid(c, 1, 5) & " <INDEX>" & bbv2 '& c.Offset(0, 3)
ElseIf Instr(1, d, "ix") Then
c = Mid(c, 1, 4) & " <INDEX>" & bbv2 & c.Offset(0, 3)
Else
c = Mid(c, 1, 5) & " <INDEX>" & bbv2
End If
Debug.Print (c)
Next c
Next d