现在有一个数组a(),其中的元素为-1,12,56,36,-9,-87,21
把数组a()中大于0的数提取出来,形成新的数组b()使得b()=(12,56,36,21)
我用下面的方法实现的效果是b()=(0,12,56,36,0,0,21)
for i = 1 to 7
if a(i)>0 then
b(i)=a(i)
end if
next该如何改改,才能实现新的数组?
大家帮忙看看
把数组a()中大于0的数提取出来,形成新的数组b()使得b()=(12,56,36,21)
我用下面的方法实现的效果是b()=(0,12,56,36,0,0,21)
for i = 1 to 7
if a(i)>0 then
b(i)=a(i)
end if
next该如何改改,才能实现新的数组?
大家帮忙看看
Dim A(7) As Long
Dim B() As Long
ReDim B(0) As Long
A(1) = -1
A(2) = 12
A(3) = 56
A(4) = 36
A(5) = -9
A(6) = -87
A(7) = 21For i = 1 To 7
If A(i) > 0 Then
ReDim Preserve B(UBound(B) + 1) As Long
B(UBound(B)) = A(i)
End If
NextFor i = 1 To UBound(B)
MsgBox B(i)
Next
End Sub
for i = 1 to 7
if a(i)>0 then
b(j)=a(i)
j=j+1
end if
next
Dim a(), b$(), i%, s$
a = Array(-1, 12, 56, 36, -9, -87, 21)For i = 0 To UBound(a)
If a(i) > 0 Then
s = IIf(s = "", a(i), s & "," & a(i))
End If
Next
b = Split(s, ",")
Dim a
Dim b()
Dim i As Integer, k As Integer
S = "-1,12,56,36,-9,-87,21"
a = Split(S, ",")
For i = 0 To UBound(a)
If a(i) > 0 Then
ReDim Preserve b(k)
b(k) = a(i)
k = k + 1
End If
Next
For i = 0 To UBound(b)
Debug.Print b(i)
Next
End Sub
k = LBound(a)
i = UBound(a)
ReDim b(k To i)
For i = k To i
If a(i) > 0 Then
b(k) = a(i)
k = k + 1
End If
Next
ReDim Preserve b(LBound(a) To k - 1)
Dim a
a = Array(-1, 12, 56, 36, -9, -87, 21)
Dim b
b = Filter(a, "-")
Debug.Print b(0), b(1), b(2)
End Sub
'如果数组是Variant类型:
Dim a, b
a = Array(-1, 12, 56, 36, -9, -87, 21)
b = Filter(a, "-", False)
Debug.Print Join(b, ",")