使用阵列搜索情况值Excel的VBA [英] Use array to search for CASE values Excel VBA
问题描述
我想一个小区内创建变量值列表的数组。
I'm trying to create an array from a list of variable values within one cell.
例如:B3单元格中包含的值:1A,2B,3A,4A,5C。
For example: Cell B3 contains values: 1A, 2B, 3A, 4A, 5C.
我想这些数据转换,使:myArray的=(1A,2B,3A,4A,5C)
I want to convert that data so that: myarray=("1A", "2B", "3A", "4A", "5C")
即。
myarray(1) = "1A"
myarray(2) = "2B"
myarray(3) = "3A"
myarray(4) = "4A"
myarray(5) = "5C"
然后我想用数组的值来执行搜索CASE编译运行总计进行测试。
Then I want to use the values of the array to perform a CASE search to compile a running total for testing.
我的code迄今:
'Create subroutine that will copy and total data from worksheet 1 to worksheet 2
Private Sub VTS()
'Establish variable for CASE to search
Dim ValR As String
'Establish counter array
Dim myarray(1 To 170)
myarray(1) = Worksheets(2).Range("A7").Value
myarray(2) = Worksheets(2).Range("A10").Value
'Dim valves() As String
'Dim thisValue As String
ValR = Worksheets(1).Range("B4").Value
'ValR = Split(valveString, ";")
'valves = ValR
'For v = 1 To UBound(valves)
' thisValve = valves(v)
Select Case ValR
Case "1A"
Worksheets(2).Range("C7").Copy ' Copy current Total
Worksheets(2).Range("A7").PasteSpecial ' Move to "Previous Total" to sum total
myarray(1) = Worksheets(1).Range("B3").Value - Worksheets(1).Range("B2").Value
If myarray(1) < 0 Then
myarray(1) = 1000000 + myarray(1)
End If
Worksheets(2).Range("B7").Value = myarray(1)
Worksheets(2).Range("C7").Value = Worksheets(2).Range("A7").Value + Worksheets(2).Range("B7").Value
Worksheets(2).Range("C7").Copy
Worksheets(1).Range("B10").PasteSpecial
Case "1B"
Worksheets(2).Range("C10").Copy
Worksheets(2).Range("A10").PasteSpecial
myarray(2) = Worksheets(1).Range("B3").Value - Worksheets(1).Range("B2").Value
If myarray(2) < 0 Then
myarray(2) = 1000000 + myarray(2)
End If
Worksheets(2).Range("B10").Value = myarray(2)
Worksheets(2).Range("C10").Value = Worksheets(2).Range("A10").Value + Worksheets(2).Range("B10").Value
Worksheets(2).Range("C10").Copy
Worksheets(1).Range("B10").PasteSpecial
Case Else
MsgBox "Wrong Model Entered / Model Does Not Exist"
End Select
'Next v
End Sub
Public Sub Call_VTS()
Call VTS
End Sub
要总结,我希望:
1)从不同的单元格的数据创建一个Array
1) Build an Array from varying Cell Data
2)其中,每个串重新presents所述阵列的不同位置
2) Of which, each string represents a different position of the array
3)然后运行该阵列的每个位置
3) Then run a CASE search for each position of the array
我一直在挣扎这几天的。任何帮助是AP preciated。
I've been struggling with this for a couple of days. Any help is appreciated.
推荐答案
为你的第一个问题,如果B3单元格中包含1A,2B,3A,4A,5C,那么
To you first question, if Cell B3 contains "1A, 2B, 3A, 4A, 5C" then
myArray = Split(Range("B3"),", ")
会给你以下几点:
will give you the following:
myArray(0) = "1A"
myArray(1) = "2B"
myArray(2) = "3A"
myArray(3) = "4A"
myArray(4) = "5C"
如果您希望通过阵列运行和评估每个项目,把每个循环在你的选择情况:
If you want to run through the array and evaluate each item, put a for each loop around your select case:
For Each a In myArray
Select Case a
Case "1A"
Worksheets(2).Range("C7").Copy ' Copy current Total
Worksheets(2).Range("A7").PasteSpecial ' Move to "Previous Total" to sum total
myarray(1) = Worksheets(1).Range("B3").Value - Worksheets(1).Range("B2").Value
If myarray(1) < 0 Then
myarray(1) = 1000000 + myarray(1)
End If
Worksheets(2).Range("B7").Value = myarray(1)
Worksheets(2).Range("C7").Value = Worksheets(2).Range("A7").Value + Worksheets(2).Range("B7").Value
Worksheets(2).Range("C7").Copy
Worksheets(1).Range("B10").PasteSpecial
Case "1B"
Worksheets(2).Range("C10").Copy
Worksheets(2).Range("A10").PasteSpecial
myarray(2) = Worksheets(1).Range("B3").Value - Worksheets(1).Range("B2").Value
If myarray(2) < 0 Then
myarray(2) = 1000000 + myarray(2)
End If
Worksheets(2).Range("B10").Value = myarray(2)
Worksheets(2).Range("C10").Value = Worksheets(2).Range("A10").Value + Worksheets(2).Range("B10").Value
Worksheets(2).Range("C10").Copy
Worksheets(1).Range("B10").PasteSpecial
Case Else
MsgBox "Wrong Model Entered / Model Does Not Exist"
End Select
Next
这篇关于使用阵列搜索情况值Excel的VBA的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!