Vba excel Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²: VBA Excel. ΠΠ°ΡΡΠΈΠ²Ρ (ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠ΅, ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅)
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π² VBA Π½Π° ΡΡΠΎΠΊΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠΈ
ο»Ώ
VBA β ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Visual Basic, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΈ ΡΠ·ΡΠΊΠΈ β Π±Π»ΠΈΠ·ΠΊΠΈΠ΅ ΡΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠΈ. Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΠΈ Π»Π΅Π³ΠΊΠΎ, Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎΠ± ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΡΡΠ΅Π΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π½ΡΠΆΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ β MS Office Π΅ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π° Π»ΡΠ±ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ².
Π£Π΄ΠΎΠ±ΡΡΠ²ΠΎ ΡΡΠ΅Π΄Ρ VBA Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½Π° Π²Π½Π΅Π΄ΡΠ΅Π½Π° Π² ΠΏΠ°ΠΊΠ΅Ρ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Microsoft Office ΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π° Π»ΡΠ±ΠΎΠΌ ΠΠ, Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠΈΡΠ΅Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ·ΡΠΊΠ° VBA ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ³ΠΎΠ΄Π½Ρ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π½Π° ΡΡΠΎΠΊΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠΈ.
ΠΠ°ΡΡΠΈΠ² β Π½Π°Π±ΠΎΡ ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΠΎ ΠΈΠΌΡ ΠΈ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Π½Π°Π±ΠΎΡΠ΅. ΠΡΠ³Π°Π½ΠΈΠ·ΡΠ΅ΠΌ Π² ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ Excel Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· 20 Ρ 10 = 200 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² Excel ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠΎΠ»Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ΅Π»ΡΠΌΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΎΡ 1 Π΄ΠΎ 100.
Π ΠΈΡ. 1. ΠΠΎΠ»Π΅ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π² Excel
ΠΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΡ Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ β Visual Basic. ΠΠ°ΡΠ΅ΠΌ Π²ΠΊΠ»Π°Π΄ΠΊΠ° Insert β Module. ΠΡΠΊΡΠΎΠ΅ΡΡΡ ΠΎΠΊΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Π ΠΈΡ. 2. ΠΠΊΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
Sub ΠΠ²ΡΠΌΠ΅ΡΠ½ΡΠΉ_ΠΠ°ΡΡΠΈΠ²()
Dim A(20, 10) As Integer
For i = 1 To 20 ‘Π§ΠΈΡΠ»ΠΎ ΡΡΡΠΎΠΊ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅
For j = 1 To 10 ‘Π§ΠΈΡΠ»ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅
A(i, j) = Int(Rnd * 100 + 1) ‘ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΎΡ 1 Π΄ΠΎ 100
Cells(i, j) = A(i, j)
Next j
Next i
ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΠΌ Π»ΠΈΡΡΠ΅ Excel ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΠΎΠ»Π΅:
Π ΠΈΡ. 3. ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π² Excel
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ, ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²ΡΡΠΈΡΠ»ΠΈΠΌ ΡΡΠΌΠΌΡ ΠΈ ΡΠ°Π·ΠΌΠ°Ρ ΡΠ°Π±Π»ΠΈΡΡ. ΠΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ΅Π»ΡΠ΅, ΠΊΡΠΎΠΌΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠΈΡΠ²ΠΎΠΈΠΌ ΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ : Dim Max, Min, Π‘ΡΠΌΠΌΠ°, Π Π°Π·ΠΌΠ°Ρ As Integer, Π‘ΡΠ΅Π΄Π½Π΅Π΅ As Single.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ½Π΄ΡΠΊΡΠΈΠΈ, Π½Π°ΠΉΠ΄ΡΠΌ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅ ΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ: If A(i, j) >Max Then Max = A(i, j)
If A(i, j)
ΠΠ»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΡΠΌΠΌΡ: Π‘ΡΠΌΠΌΠ° = Π‘ΡΠΌΠΌΠ° + A(i, j), ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: Π‘ΡΠ΅Π΄Π½Π΅Π΅ = Π‘ΡΠΌΠΌΠ° / 200, ΡΠ°Π·ΠΌΠ°Ρ Π° ΡΠ°Π±Π»ΠΈΡΡ: Π Π°Π·ΠΌΠ°Ρ = Max β Min. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
Sub ΠΠ²ΡΠΌΠ΅ΡΠ½ΡΠΉ_ΠΠ°ΡΡΠΈΠ²()
Dim A(20, 10) As Integer
Dim Max, Min, Π‘ΡΠΌΠΌΠ°, Π Π°Π·ΠΌΠ°Ρ As Integer, Π‘ΡΠ΅Π΄Π½Π΅Π΅ As Single
Max = 0 ‘ΠΠ°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ²Π΅
Min = 100 ‘ΠΠ°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ²Π΅
Π‘ΡΠΌΠΌΠ° = 0
For i = 1 To 20 ‘Π§ΠΈΡΠ»ΠΎ ΡΡΡΠΎΠΊ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅
For j = 1 To 10 ‘Π§ΠΈΡΠ»ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅
A(i, j) = Int(Rnd * 100 + 1) ‘ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΎΡ 1 Π΄ΠΎ 100
Cells(i, j) = A(i, j)
If A(i, j) >= Max Then Max = A(i, j) ‘ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ²Π΅
If A(i, j)
Π‘ΡΠΌΠΌΠ° = Π‘ΡΠΌΠΌΠ° + A(i, j) ‘ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π‘ΡΠΌΠΌΡ
Next j
Next i
Π‘ΡΠ΅Π΄Π½Π΅Π΅ = Π‘ΡΠΌΠΌΠ° / 200 ‘ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π‘ΡΠ΅Π΄Π½Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
Π Π°Π·ΠΌΠ°Ρ = Max β Min
Range(Β«A22″).Value = Β«Max =»
Range(Β«A23″).Value = Β«Min =»
Range(Β«A24″).Value = Β«Π‘ΡΠΌΠΌΠ° =»
Range(Β«A25″).Value = Β«Π‘ΡΠ΅Π΄Π½Π΅Π΅ =»
Range(Β«A26″).Value = Β«Π Π°Π·ΠΌΠ°Ρ =»
Range(Β«B22″).Value = Max
Range(Β«B23″).Value = Min
Range(Β«B24″).Value = Π‘ΡΠΌΠΌΠ°
Range(Β«B25″).Value = Π‘ΡΠ΅Π΄Π½Π΅Π΅
Range(Β«B26″).Value = Π Π°Π·ΠΌΠ°Ρ
End Sub
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠΏΠΈΠΈ ΡΠ°Π±Π»ΠΈΡΡ, ΡΠ΄Π²ΠΈΠ½Π΅ΠΌ Π΅Ρ Π½Π° 11 ΠΏΠΎΠ·ΠΈΡΠΈΠΉ Π²ΠΏΡΠ°Π²ΠΎ.
‘Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΡΠ°Π±Π»ΠΈΡΡ
For i = 1 To 20
For j = 1 To 10
Cells(i, j + 11) = A(i, j)
Next j
Next i
ΠΠ°Π³Π»ΡΠ΄Π½ΠΎ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΠΌΠΈ ΠΊΠΎΠΏΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ.
Π ΠΈΡ. 4. ΠΠΎΠΏΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ
Π‘ ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ ΠΌΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: ΠΠ°ΠΌΠ΅Π½ΠΈΠΌ Π²ΡΠ΅ ΡΠΈΡΠ»Π° ΠΊΡΠ°ΡΠ½ΡΠ΅ 2 Π½Π° 2, ΠΊΡΠ°ΡΠ½ΡΠ΅ 3 Π½Π° 3, ΠΊΡΠ°ΡΠ½ΡΠ΅ 5 Π½Π° 5, ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π½Π° Β«*Β». ΠΡΠΎΠΈΠ·Π²Π΅Π΄ΡΠΌ ΠΏΠΎΠ΄ΡΡΡΡ ΡΠ°ΠΊΠΈΡ ΡΠΈΡΠ΅Π». ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΡΠΎΠΊΠΈ:
‘ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ°Π±Π»ΠΈΡΡ
Dim ΠΡΠ°ΡΠ½ΡΠ΅2, ΠΡΠ°ΡΠ½ΡΠ΅3, ΠΡΠ°ΡΠ½ΡΠ΅5, ΠΠ²Π΅Π·Π΄ As Integer
ΠΡΠ°ΡΠ½ΡΠ΅2 = 0
ΠΡΠ°ΡΠ½ΡΠ΅3 = 0
ΠΡΠ°ΡΠ½ΡΠ΅5 = 0
ΠΠ²Π΅Π·Π΄ = 0
For i = 1 To 20
For j = 1 To 10
If A(i, j) \ 2 = A(i, j) / 2 Then Cells(i, j + 22) = 2
If A(i, j) \ 3 = A(i, j) / 3 Then Cells(i, j + 22) = 3
If A(i, j) \ 5 = A(i, j) / 5 Then Cells(i, j + 22) = 5
If A(i, j) \ 2 A(i, j) / 2 And A(i, j) \ 3 A(i, j) / 3 And A(i, j) \ 5 A(i, j) / 25 Then Cells(i, j + 22) = «*»
If A(i, j) \ 2 = A(i, j) / 2 Then ΠΡΠ°ΡΠ½ΡΠ΅2 = ΠΡΠ°ΡΠ½ΡΠ΅2 + 1 ‘ΠΠΎΠ΄ΡΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΈΡΠ΅Π» ΠΊΡΠ°ΡΠ½ΡΡ 2
If A(i, j) \ 3 = A(i, j) / 3 Then ΠΡΠ°ΡΠ½ΡΠ΅3 = ΠΡΠ°ΡΠ½ΡΠ΅3 + 1 ‘ΠΠΎΠ΄ΡΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΈΡΠ΅Π» ΠΊΡΠ°ΡΠ½ΡΡ 3
If A(i, j) \ 5 = A(i, j) / 5 Then ΠΡΠ°ΡΠ½ΡΠ΅5 = ΠΡΠ°ΡΠ½ΡΠ΅5 + 1 ‘ΠΠΎΠ΄ΡΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΈΡΠ΅Π» ΠΊΡΠ°ΡΠ½ΡΡ 5
If Cells(i, j + 22) = «*» Then ΠΠ²Π΅Π·Π΄ = ΠΠ²Π΅Π·Π΄ + 1 ‘ΠΠΎΠ΄ΡΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° «*»
Next j
Next i
Range(Β«D22″).Value = Β«Π’Π°Π±Π»ΠΈΡΠ°Β»
Range(Β«O22″).Value = Β«ΠΠΎΠΏΠΈΡ Π’Π°Π±Π»ΠΈΡΡΒ»
Range(Β«Z22″).Value = Β«ΠΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°Β»
Range(Β«W22″).Value = Β«ΠΡΠ°ΡΠ½ΡΠ΅ 2″ ‘ΠΡΠ²ΠΎΠ΄ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ²
Range(Β«W23″).Value = Β«ΠΡΠ°ΡΠ½ΡΠ΅ 3″
Range(Β«W24″).Value = Β«ΠΡΠ°ΡΠ½ΡΠ΅ 5″
Range(Β«W25″).Value = Β«ΠΠΎΠ»-Π²ΠΎ *»
Range(Β«X22″).Value = ΠΡΠ°ΡΠ½ΡΠ΅2
Range(Β«X23″).Value = ΠΡΠ°ΡΠ½ΡΠ΅3
Range(Β«X24″).Value = ΠΡΠ°ΡΠ½ΡΠ΅5
Range(Β«X25″).Value = ΠΠ²Π΅Π·Π΄
Π ΠΈΡ. 5. ΠΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Ρ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ Π·Π½Π°Π½ΠΈΠΉ, ΡΠΌΠ΅Π½ΠΈΠΉ ΠΈ Π½Π°Π²ΡΠΊΠΎΠ², Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΡΠΈΡΠ½ΡΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ Microsoft Office.
ΠΠΈΡΠ΅ΡΠ°ΡΡΡΠ°:
- Π. Π. Π€ΡΠΈΠ·Π΅Π½. ΠΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅: Π£ΡΠ΅Π±Π½ΠΎΠ΅ ΠΏΠΎΡΠΎΠ±ΠΈΠ΅ / Π. ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΠΊΠΎ-ΡΠΎΡΠ³ΠΎΠ²Π°Ρ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΡ Β«ΠΠ°ΡΠΊΠΎΠ² ΠΈ ΠΒ», 2013 Π³.
- Π―Π·ΡΠΊΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ: Π£ΡΠ΅Π±Π½ΠΎ-ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΡΠΎΠ±ΠΈΠ΅. β Π.: ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΎΡΠ΄Π΅Π» ΡΠ°ΠΊΡΠ»ΡΡΠ΅ΡΠ° ΠΠΠΈΠ ΠΠΠ£ ΠΈΠΌΠ΅Π½ΠΈ Π. Π. ΠΠΎΠΌΠΎΠ½ΠΎΡΠΎΠ²Π° β 05899; 2015 Π³.
- https://studfiles.net/preview/2897110/
- https://www.intuit.ru/studies/courses/23/23/info
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ (Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ): VBA, ΠΌΠ°ΡΡΠΈΠ², Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΠ°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄, ΡΠ°Π·ΠΌΠ°Ρ ΡΠ°Π±Π»ΠΈΡΡ, Π§ΠΈΡΠ»ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ², Π§ΠΈΡΠ»ΠΎ ΡΡΡΠΎΠΊ.
ΠΡΡΡΡΡΠΉ ΠΏΠΎΠΈΡΠΊ Π² Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ 2 ΡΠΏΠΎΡΠΎΠ±Π° Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°Ρ .
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡΠΊΠΎΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ΅ΡΠΈΡΡΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊΠ°Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°,
ΠΎΠ±Π° ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ².
Π‘ΠΏΠΎΡΠΎΠ±Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² — ΡΠ°Π·Π½ΡΠ΅:
ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ArrAutofilterEx
Π²ΡΠΎΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± — ΡΡΠ½ΠΊΡΠΈΡΒ ArraySearchResults
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΡΠΈΡ 2 ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΠΎΠΈΡΠΊΠ°:
- ArrAutofilterEx ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π΄Π°Π²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΡΠΈΡΠ΅ΡΠΈΠ΅Π² ΠΏΠΎΠΈΡΠΊΠ° (ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ)
- ArrAutofilterEx ΠΈΡΠ΅Ρ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΡΠΊΠΎΠΌΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° Π² Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Π½Π½ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² (Π½Π΅ΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅)
- ArrAutofilterEx ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ Π·Π°Π½ΠΎΠ²ΠΎ Π² ΡΠΈΠΊΠ»Π΅ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°,
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ 10 Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠ΄Π° ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π² 10 ΡΠ°Π· - ArraySearchResults ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ
- ArraySearchResultsΒ ΠΈΡΠ΅Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΈΡΠΊΠΎΠΌΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠ»Π±ΡΠ° (ΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅)
- ArraySearchResults ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΏΠΎΠΈΡΠΊ Π² Π·Π°ΡΠ°Π½Π΅Π΅ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡΡΡ Π²ΡΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΡΠΈΠΊΠ»Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΈ ΠΏΠΎΠΈΡΠΊ 100 Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π·Π°ΠΉΠΌΡΡ Π½Π΅Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ΅ΠΌ ΠΏΠΎΠΈΡΠΊ 1 Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠΈΡΠΊΠ° Π² ΠΎΠ³ΡΠΎΠΌΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°Ρ :
ΠΠΎΠΈΡΠΊ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ArrAutofilterEx
Sub ΠΡΠΈΠΌΠ΅ΡΠΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎΠΠΎΠΈΡΠΊΠ°ΠΠΠ°ΡΡΠΈΠ²Π΅() t = Timer ΠΡΠΊΠΎΠΌΠΎΠ΅ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅$ = 560 Π‘ΡΠΎΠ»Π±Π΅ΡΠΠ»ΡΠΠΎΠΈΡΠΊΠ°& = 3 Β ' Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Ρ Π»ΠΈΡΡΠ° arr = [a1:d30000].Value Β ' ΡΠΊΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Arr, ΠΎΡΡΠ°Π²Π»ΡΡ Π»ΠΈΡΡ ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ' Π³Π΄Π΅ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ Π΅ΡΡΡ ΠΈΡΠΊΠΎΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ On Error Resume Next: Err.Clear resArr = ArrAutofilterEx(arr, Π‘ΡΠΎΠ»Π±Π΅ΡΠΠ»ΡΠΠΎΠΈΡΠΊΠ°& & "=" & ΠΡΠΊΠΎΠΌΠΎΠ΅ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅$) Β ' ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΠΎΠΈΡΠΊΠ° If Err Then Debug.Print "Π’Π°ΠΊΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ": Exit Sub Β ' Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΠΎΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° For i = LBound(resArr) To UBound(resArr) Debug.Print "Π Π΅Π·ΡΠ»ΡΡΠ°Ρ - ΡΡΡΠΎΠΊΠ° " & i & " ΠΈΠ· " & UBound(resArr) & ": ", resArr(i, 1) Next i Debug.Print "ΠΡΠ΅ΠΌΡ: " & Timer - t & " ΡΠ΅ΠΊ." End Sub
ΠΠΎΠΈΡΠΊ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ArraySearchResults
Sub ΠΡΠΈΠΌΠ΅ΡΠΡΡΡΡΠΎΠ³ΠΎΠΠΎΠΈΡΠΊΠ°ΠΠΠ°ΡΡΠΈΠ²Π΅() t = Timer ΠΡΠΊΠΎΠΌΠΎΠ΅ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅$ = 560 Π‘ΡΠΎΠ»Π±Π΅ΡΠΠ»ΡΠΠΎΠΈΡΠΊΠ°& = 3 Β ' Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Ρ Π»ΠΈΡΡΠ° arr = [a1:d30000].Value Β ' ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΡΡΡΠΎΠΊΡ ΠΏΠΎΠΈΡΠΊΠ° ss$ = SearchString(arr, Π‘ΡΠΎΠ»Π±Π΅ΡΠΠ»ΡΠΠΎΠΈΡΠΊΠ°&) Β ' ΡΠΊΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Arr, ΠΎΡΡΠ°Π²Π»ΡΡ Π»ΠΈΡΡ ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ' Π³Π΄Π΅ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ Π΅ΡΡΡ ΠΈΡΠΊΠΎΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ resArr = ArraySearchResults(arr, ss$, ΠΡΠΊΠΎΠΌΠΎΠ΅ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅$) Β ' ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΠΎΠΈΡΠΊΠ° If Not IsArray(resArr) Then Debug.Print "Π’Π°ΠΊΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ": Exit Sub Β ' Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΠΎΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° For i = LBound(resArr) To UBound(resArr) Debug.Print "Π Π΅Π·ΡΠ»ΡΡΠ°Ρ - ΡΡΡΠΎΠΊΠ° " & i & " ΠΈΠ· " & UBound(resArr) & ": ", resArr(i, 1) Next i Debug.Print "ΠΡΠ΅ΠΌΡ: " & Timer - t & " ΡΠ΅ΠΊ." End Sub
ΠΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΈ ArraySearchResults:
Function ArraySearchResults(ByRef arr, ByRef searchStr As String, ByVal txt As String, _ Optional ByVal Sep As String = "%$%") As Variant ' ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ² Arr, ' ΠΈ Π·Π°ΡΠ°Π½Π΅Π΅ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΠΎΠΊΡ SearchString ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ΅Π΅ΠΊ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° ' ΠΠΎ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ SearchString ΡΡΠ½ΠΊΡΠΈΡ ΠΈΡΠ΅Ρ ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°, Π² ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ txt, ' ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ΅ΡΡΠ½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ' ΠΠΎΠΈΡΠΊ Π²Π΅Π΄ΡΡΡΡ ΠΏΠΎ Π’ΠΠ§ΠΠΠΠ£ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ro& = 0: spl = Split(searchStr, Sep & txt & Sep) If UBound(spl) = 0 Then Exit Function ' Π½Π΅Ρ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½ΡΠΆΠ½ΡΡ ΡΡΡΠΎΠΊ ' ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠΈΡΠΊΠ°, Π²ΡΡΠΈΡΠ»ΡΡ Π½ΠΎΠΌΠ΅ΡΠ° ΡΡΡΠΎΠΊ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ For i = LBound(spl) To UBound(spl) - 1 txt = spl(i): ro& = ro& + 1 + (Len(spl(i)) - Len(Replace(spl(i), Sep, ""))) / Len(Sep) \ 2 spl(i) = ro& Next i ' ΠΏΠΎΠ΄Π³ΠΎΡΠ°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Π΄Π»Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ²: ' ΠΏΠΎ ΡΠΈΡΠΈΠ½Π΅ - ΠΊΠ°ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ, ΠΏΠΎ Π²ΡΡΠΎΡΠ΅ - ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ ReDim resArr(1 To UBound(spl), LBound(arr, 2) To UBound(arr, 2)) ' Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² For i = LBound(spl) To UBound(spl) - 1 For j = LBound(arr, 2) To UBound(arr, 2) resArr(i + 1, j) = arr(spl(i), j) Next j Next i ArraySearchResults = resArr End Function Β Function SearchString(ByRef arr, ByVal ArrayColumn As Long, _ Optional ByVal Sep As String = "%$%") As String ' ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΡΠΎΠ»Π±ΡΠ° ArrayColumn ΠΌΠ°ΡΡΠΈΠ²Π° Arr Π² ΠΎΠ΄Π½Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ, ' Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡΠΎΠΊΡ Sep ' ΠΠ»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΈ Π΄Π»ΠΈΠ½Π½ΡΡ ΡΡΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ' ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ buffer$ ΠΈ buffer2$ buffer$ = "": buffer2$ = "": Sep2$ = Sep$ & Sep$: Const BufferLen& = 6000 On Error Resume Next: Err.Clear: SearchString = Sep2$ If ArrayColumn > UBound(arr, 2) Or ArrayColumn < LBound(arr, 2) Then Exit Function For i = LBound(arr) To UBound(arr) buffer$ = buffer$ & Trim$(arr(i, ArrayColumn)) & Sep2$ If Len(buffer$) > BufferLen& Then buffer2$ = buffer2$ & buffer$: buffer$ = "" If Len(buffer2$) > BufferLen& * 20 Then _ SearchString = SearchString & buffer2$: buffer2$ = "" End If Next i SearchString = SearchString & buffer2$ & buffer$ End Function
ΠΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΎΠ±ΠΎΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΏΠΎΠΈΡΠΊΠ° Π½Π΅ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ — Π½ΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΡ ArraySearchResults ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅.
Π€ΡΠ½ΠΊΡΠΈΡ ArraySwapColumns ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π²ΠΈΡΡ Π² Π½ΡΠΆΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΡΠΎΠ»Π±ΡΡ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°. Π‘ΠΌ. ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΠ½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅. Function ArraySwapColumns(ByVal arr As Variant, ByVal NewColumnsOrder$, _ Optional ByVal OptionBase As Integer = 1) As Variant ' ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² arr ' (Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ²) ' ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ NewColumnsOrder Ρ Π½ΠΎΠ²ΡΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠΎΠ² ' Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ",,5,6,8,,9-15,18,2,9-11,,1,4,,21," On Error Resume Next ColumnsArray = ParseColumnsString(NewColumnsOrder$) NewUBound% = UBound(ColumnsArray) + 1 Β ReDim tmpArr(LBound(arr, 1) To UBound(arr, 1), LBound(arr, 2) To NewUBound%) Β For j = LBound(ColumnsArray) To UBound(ColumnsArray) OldColumn% = ColumnsArray(j) + 1 - OptionBase NewColumn% = j + LBound(arr, 2) If OldColumn% >= 0 Then For i = LBound(arr, 1) To UBound(arr, 1) ' ΠΏΠ΅ΡΠ΅Π½ΠΎΡ ΡΡΠΎΠ»Π±ΡΠ° tmpArr(i, NewColumn%) = arr(i, OldColumn%) Next i End If Next j ArraySwapColumns = tmpArr End Function Β Β Function ParseColumnsString(ByVal txt$) As Variant ' ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΡΡΠΎΠΊΡ ΡΠΈΠΏΠ° ",,5,6,8,,9-15,18,2,11-9,,1,4,,21," ' ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ (Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠΉ) ΠΌΠ°ΡΡΠΈΠ² Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ' array(-1,-1,5,6,8,-1,9,10,11,12,13,14,15,18,2,11,10,9,-1,1,4,-1,21,-1) ' (ΠΏΡΡΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°ΠΌΠ΅Π½ΡΡΡΡΡ Π½Π° -1; Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ ΡΠΈΠΏΠ° 9-15 ΠΈ 17-13 ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΡΡ) arr = Split(Replace(txt$, " ", ""), ","): Dim n As Long: ReDim tmpArr(0 To 0) For i = LBound(arr) To UBound(arr) Select Case True Case arr(i) = "", Val(arr(i)) < 0 tmpArr(UBound(tmpArr)) = -1: ReDim Preserve tmpArr(0 To UBound(tmpArr) + 1) Case IsNumeric(arr(i)) tmpArr(UBound(tmpArr)) = arr(i): ReDim Preserve tmpArr(0 To UBound(tmpArr) + 1) Case arr(i) Like "*#-#*" spl = Split(arr(i), "-") If UBound(spl) = 1 Then If IsNumeric(spl(0)) And IsNumeric(spl(1)) Then For j = Val(spl(0)) To Val(spl(1)) Step IIf(Val(spl(0)) > Val(spl(1)), -1, 1) tmpArr(UBound(tmpArr)) = j: ReDim Preserve tmpArr(0 To UBound(tmpArr) + 1) Next j End If End If End Select Next i On Error Resume Next: ReDim Preserve tmpArr(0 To UBound(tmpArr) - 1) ParseColumnsString = tmpArr End Function ——————— Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ ———————- Function SWAP(ByVal arr As Variant, ByVal NewColumnsOrder$) As Variant ' Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² arr (Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ²) ' ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ NewColumnsOrder Ρ Π½ΠΎΠ²ΡΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ",,5,6,8,,9-15,18,2,9-11,,1,4,,21," ' ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ², Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠΎΠ»Π±ΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π²Π»Π΅Π½Ρ Π² Π½ΡΠΆΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ On Error Resume Next cols = Split(Replace(NewColumnsOrder$, " ", ""), ","): Dim n As Long: ReDim colArr(0 To 0) For i = LBound(cols) To UBound(cols) Select Case True Case cols(i) = "", Val(cols(i)) < 0 colArr(UBound(colArr)) = -1: ReDim Preserve colArr(0 To UBound(colArr) + 1) Case IsNumeric(cols(i)) colArr(UBound(colArr)) = cols(i): ReDim Preserve colArr(0 To UBound(colArr) + 1) Case cols(i) Like "*#-#*" spl = Split(cols(i), "-") If UBound(spl) = 1 Then If IsNumeric(spl(0)) And IsNumeric(spl(1)) Then For j = Val(spl(0)) To Val(spl(1)) Step IIf(Val(spl(0)) > Val(spl(1)), -1, 1) colArr(UBound(colArr)) = j: ReDim Preserve colArr(0 To UBound(colArr) + 1) Next j End If End If End Select Next i ReDim Preserve colArr(0 To UBound(colArr) - 1) ColumnsArray = colArr Β ReDim tmpArr(LBound(arr, 1) To UBound(arr, 1), LBound(arr, 2) To UBound(ColumnsArray) + 1) For j = LBound(ColumnsArray) To UBound(ColumnsArray) If Val(ColumnsArray(j)) >= 0 Then For i = LBound(arr, 1) To UBound(arr, 1): tmpArr(i, j + LBound(arr, 2)) = arr(i, Val(ColumnsArray(j))): Next i End If Next j SWAP = tmpArr End Function ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ (Π΄Π»Ρ ΠΏΠ΅ΡeΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π½Π° Π»ΠΈΡΡΠ΅ Excel) Range("k1:o30").Value = SWAP(Range("a1:h40").Value, "2,5,1,,8")
ΠΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡ? ΠΠ΅ ΡΠ΄Π°ΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈ Π½ΡΠΆΠ΄Ρ? ΠΡΠΎΡΠΌΠΈΡΠ΅ Π·Π°ΠΊΠ°Π· Ρ Π½Π°Ρ Π½Π° ΡΠ°ΠΉΡΠ΅, Π½Π΅ Π·Π°Π±ΡΠ² ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΈ ΠΎΠΏΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΈ ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ. |
ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² | ΠΠ°ΠΊΡΠΎΡΡ Excel
Π€ΡΠ½ΠΊΡΠΈΡ CombineArrays ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ 2 Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΠΠΠΠΠΠΠΠΠ Π¨ΠΠ ΠΠΠ« Π² ΠΎΠ΄ΠΈΠ½ ΠΌΠ°ΡΡΠΈΠ²
(Π²ΡΠΎΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² «Π΄ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ» Π½ΠΈΠΆΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ, ΠΏΡΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ ΠΈΠ· Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΠΏΠ΅ΡΠ²ΡΠΉ)
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΡΠΎΠΉ ΠΆΠ΅ ΡΠΈΡΠΈΠ½Ρ, ΡΡΠΎ ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅,Β Π° Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½Π°Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ°Π²Π½Π° ΡΡΠΌΠΌΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΡΡΠΎΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ².
Β
Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π½Π΅ Π·Π°Π΄Π°Π½, ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄ΡΡΠ³ΠΎΠΉ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² (Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ)
ΠΠΠΠΠΠΠΠ: Π²ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² 1 ΠΈ 2 Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ (ΠΊΡΠΎΠΌΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ — ΠΏΠΎ Π²ΡΡΠΎΡΠ΅)
ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ 1 (Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Option Base 1)
Sub ΠΡΠΈΠΌΠ΅ΡΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΠΠ°ΡΡΠΈΠ²ΠΎΠ²() Arr1 = [a5:c10].Value ' ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ 6 * 3 Arr2 = [a24:c26].Value ' ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ 3 * 3 Arr3 = [a55:c62].Value ' ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ 8 * 3 ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΠΉΠΠ°ΡΡΠΈΠ²12 = CombineArrays(Arr1, Arr2) Debug.Print "ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² 1 ΠΈ 2: " & _ UBound(ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΠΉΠΠ°ΡΡΠΈΠ²12) ' ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: 9 (6+3) Β ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΠΉΠΠ°ΡΡΠΈΠ²123 = CombineArrays(Arr1, CombineArrays(Arr2, Arr3)) Debug.Print "ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² 1, 2 ΠΈ 3: " & _ UBound(ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΠΉΠΠ°ΡΡΠΈΠ²123) ' ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: 17 (6+3+8) End Sub
Function CombineArrays(Arr1 As Variant, Arr2 As Variant) As Variant 'ΡΡΠ½ΠΊΡΠΈΡ CombineArrays ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ 2 Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΠΠΠΠΠΠΠΠΠ Π¨ΠΠ ΠΠΠ« Π² ΠΎΠ΄ΠΈΠ½ ΠΌΠ°ΡΡΠΈΠ² '(Π²ΡΠΎΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² "Π΄ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ" Π½ΠΈΠΆΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ, ΠΏΡΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ ΠΈΠ· Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΠΏΠ΅ΡΠ²ΡΠΉ) 'Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΡΠΎΠΉ ΠΆΠ΅ ΡΠΈΡΠΈΠ½Ρ, ΡΡΠΎ ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅, 'Π° Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½Π°Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ°Π²Π½Π° ΡΡΠΌΠΌΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΡΡΠΎΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ' 'Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π½Π΅ Π·Π°Π΄Π°Π½, ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄ΡΡΠ³ΠΎΠΉ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² (Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ) 'ΠΠΠΠΠΠΠΠ: Π²ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² 1 ΠΈ 2 Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ (ΠΊΡΠΎΠΌΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ - ΠΏΠΎ Π²ΡΡΠΎΡΠ΅) 'ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ 1 (Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Option Base 1) Β ' Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ, ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ (ΠΌΠ°ΡΡΠΈΠ²) If (Not IsArray(Arr1)) And IsArray(Arr2) Then CombineArrays = Arr2: Exit Function If (Not IsArray(Arr2)) And IsArray(Arr1) Then CombineArrays = Arr1: Exit Function ' Π΅ΡΠ»ΠΈ ΠΎΠ±Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ If (Not IsArray(Arr2)) And (Not IsArray(Arr1)) Then Debug.Print "ΠΠ¨ΠΠΠΠ: ΠΠ±Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ!" CombineArrays = Null: Exit Function End If Β ' ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Arr1 ΠΈ Arr2 On Error Resume Next: Err.Clear Β If (LBound(Arr1, 2) <> LBound(Arr2, 2)) Or (UBound(Arr1, 2) <> UBound(Arr2, 2)) Then Debug.Print "ΠΠ¨ΠΠΠΠ: Π Π°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² (ΠΏΠΎ ΡΠΈΡΠΈΠ½Π΅) Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ" CombineArrays = Null: Exit Function End If If Err.Number = 9 Then Debug.Print "ΠΠ¨ΠΠΠΠ: ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΌ!" CombineArrays = Null: Exit Function End If Β Β ReDim arr(1 To UBound(Arr1, 1) + UBound(Arr2, 1), LBound(Arr1, 2) To UBound(Arr1, 2)) Β For i = 1 To UBound(Arr1, 1) For j = LBound(Arr1, 2) To UBound(Arr1, 2) arr(i, j) = Arr1(i, j) Next Next Β For i = 1 To UBound(Arr2, 1) For j = LBound(Arr2, 2) To UBound(Arr2, 2) arr(i + UBound(Arr1, 1), j) = Arr2(i, j) Next Next CombineArrays = arr ' Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² End Function
ΠΠΎΠΈΡΠΊ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡΡΠΎΠΊ Π² Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅
ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΡΠ΅Ρ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΏΠΎΡ Π΄ΠΎΠ΄ΡΡΠΈΠ΅ ΠΏΠΎΠ΄ Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π½ΠΎΠΌΠ΅ΡΠΎΠ² ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡΡΠΎΠΊ (ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΡΡΡ)
Option Compare Text Β Function ArrAutofilter(ByRef arr, ParamArray args() As Variant) As String ' ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ ΠΌΠ°ΡΡΠΈΠ² ARR Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ' ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΊΡΠΈΡΠ΅ΡΠΈΠ΅Π² ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ "3=Π½Π΅ΠΊΠΈΠΉ ΡΠ΅ΠΊΡΡ" (Π½ΠΎΠΌΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠ°, "=", ΠΈΡΠΊΠΎΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅) ' Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ - ΡΠΏΠΈΡΠΎΠΊ Π½ΠΎΠΌΠ΅ΡΠΎΠ² ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡΡΠΎΠΊ (ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΡΡΡ) Dim Index As Long, OK As Boolean, ComparedColumn As Long, res As String Β If Not IsArray(arr) Then MsgBox "ΠΡΠΎ Π½Π΅ ΠΌΠ°ΡΡΠΈΠ²!", vbCritical, _ "ΠΡΠΈΠ±ΠΊΠ° Π² ΡΡΠ½ΠΊΡΠΈΠΈ ArrAutofilter": Exit Function Β For Index = LBound(args) To UBound(args) ' ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ If Not IsMissing(args(Index)) Then If GetAutofilterArgument(args(Index), ComparedColumn, res) Then If (ComparedColumn > UBound(arr, 2)) Or (ComparedColumn < LBound(arr, 2)) Then _ ArrAutofilter = ArrAutofilter & "Π ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅Ρ ΡΡΠΎΠ»Π±ΡΠ° Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ " & _ ComparedColumn & vbNewLine Else ArrAutofilter = ArrAutofilter & "ΠΠ΅Π²Π΅ΡΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π° ΡΡΡΠΎΠΊΠ° ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ: " & _ args(Index) & vbNewLine End If Else ArrAutofilter = ArrAutofilter & (Index + 1) & "-ΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ" & _ vbNewLine End If Next Index If Len(ArrAutofilter) Then MsgBox ArrAutofilter, vbCritical, "ΠΡΠΈΠ±ΠΊΠ° Π² ΡΡΠ½ΠΊΡΠΈΠΈ ArrAutofilter" ArrAutofilter = "": Exit Function End If Β For i = LBound(arr, 1) To UBound(arr, 1) ' ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° OK = True For Index = LBound(args) To UBound(args) ' ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ' ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ X = GetAutofilterArgument(args(Index), ComparedColumn, res) If Not (arr(i, ComparedColumn) Like res) Then OK = False: Exit For Next Index If OK Then ArrAutofilter = ArrAutofilter & "," & i Next i ArrAutofilter = Mid$(ArrAutofilter, 2) End Function Β Function GetAutofilterArgument(ByVal arg, ByRef col As Long, ByRef searchStr As String) As Boolean col = 0: searchStr = "" If UBound(Split(arg, "=")) < 1 Then Exit Function ' Π½Π΅Ρ Π·Π½Π°ΠΊΠ° = sCol = Split(arg, "=")(0): If Len(sCol) = 0 Or Not sCol Like String(Len(sCol), "#") Then _ Exit Function ' Π½ΠΎΠΌΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠ° Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ searchStr = Mid$(arg, Len(sCol) + 2): col = Val(sCol) If col > 0 Then GetAutofilterArgument = True End Function Β Sub ΠΡΠΈΠΌΠ΅ΡΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ() arr = shs.UsedRange.Value Debug.Print ArrAutofilter(arr, "2=ΠΠ»Ρ ΠΌΡΠΆΡΠΈΠ½", "4=ΠΠΆΠΈΠ½ΡΡ", "73=?*") End Sub
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ — ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊΠΆΠ΅, ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² Π²ΠΈΠ΄Π΅ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°:
Function ArrAutofilterEx(ByRef arr, ParamArray args() As Variant) As Variant ' ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ ΠΌΠ°ΡΡΠΈΠ² ARR Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ' ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΊΡΠΈΡΠ΅ΡΠΈΠ΅Π² ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ "3=Π½Π΅ΠΊΠΈΠΉ ΡΠ΅ΠΊΡΡ" (Π½ΠΎΠΌΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠ°, "=", ΠΈΡΠΊΠΎΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅) ' Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ Dim Index As Long, OK As Boolean, ComparedColumn As Long, res As String Β If Not IsArray(arr) Then MsgBox "ΠΡΠΎ Π½Π΅ ΠΌΠ°ΡΡΠΈΠ²!", vbCritical, _ "ΠΡΠΈΠ±ΠΊΠ° Π² ΡΡΠ½ΠΊΡΠΈΠΈ ArrAutofilter": Exit Function Β For Index = LBound(args) To UBound(args) ' ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ If Not IsMissing(args(Index)) Then If GetAutofilterArgument(args(Index), ComparedColumn, res) Then If (ComparedColumn > UBound(arr, 2)) Or (ComparedColumn < LBound(arr, 2)) Then _ ArrAutofilter = ArrAutofilter & "Π ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅Ρ ΡΡΠΎΠ»Π±ΡΠ° Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ " & _ ComparedColumn & vbNewLine Else ArrAutofilter = ArrAutofilter & "ΠΠ΅Π²Π΅ΡΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π° ΡΡΡΠΎΠΊΠ° ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ: " & _ args(Index) & vbNewLine End If Else ArrAutofilter = ArrAutofilter & (Index + 1) & "-ΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ" & _ vbNewLine End If Next Index If Len(ArrAutofilter) Then MsgBox ArrAutofilter, vbCritical, "ΠΡΠΈΠ±ΠΊΠ° Π² ΡΡΠ½ΠΊΡΠΈΠΈ ArrAutofilter" ArrAutofilterEx = "": Exit Function End If Β Dim coll As New Collection For i = LBound(arr, 1) To UBound(arr, 1) ' ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° OK = True For Index = LBound(args) To UBound(args) ' ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ' ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ X = GetAutofilterArgument(args(Index), ComparedColumn, res) If Not (arr(i, ComparedColumn) Like res) Then OK = False: Exit For Next Index If OK Then coll.Add i Next i Β ' ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ReDim newarr(1 To coll.Count, LBound(arr, 2) To UBound(arr, 2)) For i = 1 To coll.Count ro = coll(i) For j = LBound(arr, 2) To UBound(arr, 2): newarr(i, j) = arr(ro, j): Next j Next i Β ArrAutofilterEx = newarr End Function Β Function GetAutofilterArgument(ByVal arg, ByRef col As Long, ByRef searchStr As String) As Boolean col = 0: searchStr = "" If UBound(Split(arg, "=")) < 1 Then Exit Function ' Π½Π΅Ρ Π·Π½Π°ΠΊΠ° = sCol = Split(arg, "=")(0): If Len(sCol) = 0 Or Not sCol Like String(Len(sCol), "#") Then _ Exit Function ' Π½ΠΎΠΌΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠ° Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ searchStr = Mid$(arg, Len(sCol) + 2): col = Val(sCol) If col > 0 Then GetAutofilterArgument = True End Function
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
Sub FilterExample() On Error Resume Next Dim arr As Variant Β ' ΠΎΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠΆΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° a2:t200, ' Π³Π΄Π΅ ΡΠ΅ΠΊΡΡ Π² ΡΡΠ΅ΡΡΠ΅ΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ "asy" arr = ArrAutofilterEx(Range("a2:t200").Value, "3=asy*") Β ' ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π»ΠΈΡΡ, Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π½Π° Π½Π΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Worksheets.Add.Range("a1").Resize(UBound(arr, 1), UBound(arr, 2)).Value = arr End Sub
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Excel VBA — ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ
ΠΠ°ΡΡΠΈΠ²Ρ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΡΠΎΠΊΠ΅ Π±ΡΠ»ΠΈ
Π²ΡΠ΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ. ΠΠ½ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΡΠΎΠ»Π±Π΅Ρ
ΠΏΡΠ½ΠΊΡΠΎΠ². ΠΠΎ Ρ Π²Π°Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ. Π’Π΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ Π²Ρ
ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π΄ΠΎ 60 ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ Π² Excel VBA. ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ
Π±ΡΠ΄ΡΡΠ΅ ΡΠ°Π΄Ρ ΡΠ·Π½Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠ΅Π΄ΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ΅Ρ
ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ,
ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ 2 ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ.
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π²Ρ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΡ ΠΏΠΎΡΠ»Π΅
ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΡΡΠ³Π»ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ ΠΈΠΌΠ΅Π½ΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½
ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ.ΠΠ°ΠΊ ΡΡΠΎ:
Dim MyArray (5, 4) ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
ΠΠ»ΠΈ ΡΠ°ΠΊ:
Dim MyArray (ΠΎΡ 1 Π΄ΠΎ 5, ΠΎΡ 1 Π΄ΠΎ 6) ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
ΠΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π²ΡΡΠ΅ ΠΌΡ ΡΠΊΠ°Π·Π°Π»ΠΈ, ΡΡΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄ΠΎΠ»ΠΆΠ½Ρ
Π½Π°ΡΠ°ΡΡ Ρ 1, Π° Π½Π΅ Ρ 0.
ΠΠ°ΡΡΠΈΠ²Ρ Π²ΡΡΠ΅ — ΡΡΠΎ Π΄Π²ΡΡ
ΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ. ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅,
ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ Π·Π°ΠΏΡΡΡΡ ΠΈ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΡΠΈΡΠ»ΠΎ:
Dim MyArray (5, 4, 6) ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
Dim MyArray (ΠΎΡ 1 Π΄ΠΎ 5, ΠΎΡ 1 Π΄ΠΎ 4, ΠΎΡ 1 Π΄ΠΎ 6) ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΈ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ².ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ²Ρ
Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΡΠ΅ΠΉΠΊΠ°Ρ
ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ Sub ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ ArrayExercise_3 . (ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΡ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ
ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠΎΠΊΠ°, Π΅ΡΠ»ΠΈ Ρ
ΠΎΡΠΈΡΠ΅.)
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΡ ΡΡΡΠΎΠΊΡ:
Dim MyArray (2, 3) ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ². ΠΡΠΌΠ°ΠΉΡΠ΅ ΠΎΠ± ΡΡΠΎΠΌ ΠΊΠ°ΠΊ ΠΎ ΡΡΡΠΎΠΊΠ°Ρ
ΠΈ ΡΡΠΎΠ»Π±ΡΠ°Ρ
Π² Π²Π°ΡΠ΅ΠΉ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅.
2 ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ 3 ΡΡΡΠΎΠΊΠΈ (ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΠΎΡ 0 Π΄ΠΎ 2). 3 ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ 4 ΡΡΠΎΠ»Π±ΡΠ°.
Π§ΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠΈ ΡΡΡΠΎΠΊΠΈ:
MyArray (0, 0) = 10
MyArray (0, 1) = 10
MyArray (0, 2) = 10
MyArray (0, 3) = 10
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΡΠΎΠΊΠ° 0, ΡΡΠΎΠ»Π±Π΅Ρ 0 ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 10, ΡΡΡΠΎΠΊΠ° 0, ΡΡΠΎΠ»Π±Π΅Ρ 1 ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
10, ΡΡΠΎΠ»Π±Π΅Ρ 2 ΡΡΡΠΎΠΊΠΈ 0 ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 10, Π° ΡΡΠΎΠ»Π±Π΅Ρ 3 ΡΡΡΠΎΠΊΠΈ 0 ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 10.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π² ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ Π½Π΅Ρ ΡΡΡΠΎΠΊΠΈ ΠΈΠ»ΠΈ ΡΡΠΎΠ»Π±ΡΠ° 0, ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ
ΠΌΡ ΡΠ΅ΡΠ°Π΅ΠΌ ΡΡΠΎ Π² ΡΠΈΠΊΠ»Π΅. Π ΠΏΠΎΠΊΠ° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ
ΠΏΠΎΠ·ΠΈΡΠΈΠΉ Π²
2-ΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ:
MyArray (1, 0) = 20
MyArray (1, 1) = 20
MyArray (1, 2) = 20
MyArray (1, 3) = 20
MyArray (2, 0) = 30
MyArray (2, 1) = 30
MyArray (2, 2) = 30
MyArray (2, 3) = 30
ΠΠΎΠ²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ·ΠΈΡΠΈΡΠΌ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅.
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠΉΡΠΈ Π²ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π² 2-D, Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΄Π²ΠΎΠΉΠ½Π°Ρ ΠΏΠ΅ΡΠ»Ρ. ΠΠ²ΠΎΠΉΠ½Π°Ρ ΠΏΠ΅ΡΠ»Ρ
ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΊΠ» Π²Π½ΡΡΡΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ. ΠΠ½Π΅ΡΠ½ΠΈΠΉ ΡΠΈΠΊΠ» Π·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ ΡΡΡΠΎΠΊΠ°Ρ
, Π°
Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΈΠΊΠ» Π·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ ΡΡΠΎΠ»Π±ΡΠ°Ρ
. (Π‘ΡΡΠΎΠΊΠΈ — ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ
ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ MyArray , Π° ΡΡΠΎΠ»Π±Π΅Ρ — Π²ΡΠΎΡΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ
ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΡΡΠ³Π»ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ MyArray )
ΠΠ»Ρ ΡΠΈΠΊΠ»Π°, Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠΎ:
ΠΠ»Ρ i = ΠΎΡ 0 Π΄ΠΎ 2
ΠΠ°Π»Π΅Π΅ i
Π’Π΅ΠΏΠ΅ΡΡ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΈΠΊΠ», Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠ»ΡΠΆΠΈΡΠ½ΡΠΌ ΡΡΠΈΡΡΠΎΠΌ:
ΠΠ»Ρ i = ΠΎΡ 0 Π΄ΠΎ 2
ΠΠ»Ρ j = ΠΎΡ 0 Π΄ΠΎ 3
ΠΠ°Π»Π΅Π΅ j
ΠΠ°Π»Π΅Π΅ i
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π° — j , Π° Π½Π΅ i .ΠΠΎ ΠΎΠ½ΠΈ
— ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΈΡ
ΠΏΠΎΡΡΠΈ ΠΊΠ°ΠΊ ΡΠ³ΠΎΠ΄Π½ΠΎ.
Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΠΈΠΊΠ» ΠΈΠ΄Π΅Ρ ΠΎΡ 0 Π΄ΠΎ 2, Π° Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΈΠΊΠ» ΠΈΠ΄Π΅Ρ
ΠΎΡ 0 Π΄ΠΎ 3. ΠΠ½ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΠΈΡΠ»Π°ΠΌ Π² ΠΊΡΡΠ³Π»ΡΡ
ΡΠΊΠΎΠ±ΠΊΠ°Ρ
MyArray.
ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π΅Π³ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ.
ΠΠΎΠ΄ ΡΠΈΠΊΠ»Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ, Π½ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ΄ΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ For ΠΈ Next.
Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π°:
Π―ΡΠ΅ΠΉΠΊΠΈ (i + 1, j + 1). ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ = MyArray (i, j)
ΠΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅Π³ΠΎ.ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΠ°ΡΡΡ Cells:
Π―ΡΠ΅ΠΉΠΊΠΈ (i + 1, j + 1)
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π°ΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Ρ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ Π½Π° Π½Π°ΡΠ°Π»ΠΎ Ρ 0, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ 1 ΠΊ i ΠΈ
ΠΠΆ . ΠΡΠ»ΠΈ Π±Ρ ΠΌΡ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ, ΡΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΎΠ±Ρ
ΠΎΠ΄Π΅ ΡΠΈΠΊΠ»Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ»ΠΈ Π±Ρ
Π±ΡΡΡ ΡΠ°ΠΊΠΈΠΌΠΈ:
Π―ΡΠ΅ΠΉΠΊΠΈ (0, 0)
ΠΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Excel Π½Π΅Ρ ΡΡΡΠΎΠΊΠΈ 0 ΠΈ ΡΡΠΎΠ»Π±ΡΠ° 0.
ΠΠ° ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π· ΡΠΈΠΊΠ» Π΄Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
0, 0 Π΄Π»Ρ ΡΡΠ΅Π΅ΠΊ, Π²ΠΎΡ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅.
ΠΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π° — ΡΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΊΠ». ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Π΅ΡΡ
Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΈΠΊΠ» Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΡ 0 Π΄ΠΎ 3. ΠΠ°ΡΠ΅ΠΌ VBA ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅Ρ ΠΊ Next i
Π»ΠΈΠ½ΠΈΡ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ i ΠΏΠΎΡΠ»Π΅ 0 — 1. ΠΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π΄Π»Ρ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π°,
ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ 2, ΡΠ°ΠΊ ΡΡΠΎ ΠΌΡ Π΅ΡΠ΅ Π½Π΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΠΈ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ. Π’Π°ΠΊ ΡΡΠΎ ΡΠ½ΠΎΠ²Π° ΠΎΠ½ ΠΏΠ°Π΄Π°Π΅Ρ
Π²Π½ΠΈΠ·, ΡΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄. ΠΠ³ΠΎ ΠΊΠΎΠ΄ ΠΏΡΠΎΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½
ΡΠ½ΠΎΠ²Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²Π΅ΡΡ ΡΡΠΎΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΈΠΊΠ». ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΠΈΠΊΠ»
ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ ΠΎΡ 0 Π΄ΠΎ 2 ΡΠ°Π·.ΠΠΎΠΊΠ° ΠΎΠ½ ΠΊΡΡΡΠΈΡΡΡ, ΠΎΠ½
ΡΠ°ΠΊ ΡΠΆ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ, ΡΡΠΎ ΠΎΠ½ Π·Π°ΠΏΡΡΡΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΈΠΊΠ» ΠΎΡ 0 Π΄ΠΎ 3 ΡΠ°Π·.
Π ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π· Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΡΠΈΠΊΠ»Π΅ Π±ΡΠ΄ΡΡ:
0, 0
0, 1
0, 2
0, 3
ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°Π· Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΡΠΈΠΊΠ»Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ i ΠΈ j Π±ΡΠ΄ΡΡ
Π±ΡΡΡ:
1, 0
1, 1
1, 2
1, 3
Π ΡΡΠ΅ΡΠΈΠΉ ΡΠ°Π· Π±ΡΠ΄Π΅Ρ:
2, 0
2, 1
2, 2
2, 3
ΠΡΠ°ΠΊ, ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΡΠΎ Π΅ΡΡΡ i , ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° 1.ΠΡΠΈ
ΡΡΠ΄Ρ. ΠΡΠΎΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, j , Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ 0, 1, 2, Π° Π·Π°ΡΠ΅ΠΌ 3 (ΡΡΠΎΠ»Π±ΡΡ).
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ Π·Π½Π°ΠΊΠ° ΡΠ°Π²Π΅Π½ΡΡΠ²Π° Π² ΡΡΡΠΎΠΊΠ΅ Cells ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
= MyArray (i, j)
i ΠΈ j ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΡΡΠ³Π»ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ MyArray Π±ΡΠ΄ΡΡ
ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ Π²ΡΡΠ΅.
ΠΠΎ Π²Π΅ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ.ΠΠ΅ΡΠ½ΠΈΡΠ΅ΡΡ ΠΊ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅, ΠΈ Π²Ρ
Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΠΎ:
ΠΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΡΠΈΠΊΠ»Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ,
ΡΠ°ΠΊ ΡΡΠΎ Π½Π΅ Π²ΠΎΠ»Π½ΡΠΉΡΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π΅ΡΠ΅ Π½Π΅ Π²ΡΠ΅ ΡΡΠΏΠ΅Π»ΠΎ. ΠΠΎΠ²ΡΠΎΡΠΈΡΠ΅ ΡΡΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΠΈ Π²Ρ
Π΄ΠΎΡΡΠΈΡΡ ΡΠ΅Π»ΠΈ.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠΎΠΊΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ Split ΠΈ ΡΠΎ, ΠΊΠ°ΠΊ
ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ.
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ VBA Π² Excel>
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΊΡΡΡΠΎΠ² Π·Π΄Π΅ΡΡ, Π½Π° Π½Π°ΡΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ Home and Learn
Β© ΠΠ²ΡΠΎΡΡΠΊΠΈΠ΅ ΠΏΡΠ°Π²Π° Π½Π° Π²ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΊΡΡΡΠ° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΠ΅Π½ ΠΠ°ΡΠ½ΠΈ
.
ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ²Π° — Visual Basic
- 3 ΠΌΠΈΠ½ΡΡΡ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅
Π Π°Π·ΠΌΠ΅Ρ — ΡΡΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ°ΡΡΠΈΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΠ±ΡΡΡ ΡΡΠΌΠΌΡ ΠΏΡΠΎΠ΄Π°ΠΆ Π·Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ ΠΌΠ΅ΡΡΡΠ°, ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ (Π΄Π΅Π½Ρ ΠΌΠ΅ΡΡΡΠ°).ΠΠ°ΡΡΠΈΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΠ±ΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄Π°ΠΆ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»Π°ΠΌ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄Π½Ρ ΠΌΠ΅ΡΡΡΠ°, ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ (Π½ΠΎΠΌΠ΅Ρ ΠΎΡΠ΄Π΅Π»Π° ΠΈ Π΄Π΅Π½Ρ ΠΌΠ΅ΡΡΡΠ°). Π§ΠΈΡΠ»ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π΅Π³ΠΎ ΡΠ°Π½Π³ΠΎΠΌ .
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Rank, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ°ΡΡΠΈΠ².
Π Π°Π±ΠΎΡΠ° Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ
ΠΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΠ»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ.ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½Ρ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° 0 Π΄ΠΎ ΡΠ°ΠΌΠΎΠ³ΠΎ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠ° ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΠΈΡΡΠ½ΠΊΠ°Ρ
ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΡΠ°Π½Π³Π°. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π° ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΡΡ
ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊ Π½Π΅ΠΌΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π²ΡΠΎΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠΊΠ°Π·Π°Π² ΠΈΠ½Π΄Π΅ΠΊΡΡ (1, 0)
.
ΠΠ΄Π½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π»ΡΠ΄Π΅ΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°.ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° — ΡΡΠΎ Π²ΠΎΠ·ΡΠ°ΡΡ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ΅Ρ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ°ΠΊΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½Π΄Π΅ΠΊΡ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΡΠ΅ΡΡΠΈΠΊΠΎΠ² Π²ΠΎΠ·ΡΠ°ΡΡΠΎΠ² ΠΎΡ 0 Π΄ΠΎ 120.
Dim ageCounts (120) As UInteger
ΠΠ²Π° ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈΠΌΠ΅ΡΡ Π΄Π²Π° ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΡΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΠ°ΠΆΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π΄Π°Π½ΠΈΡ Π² ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΡΠΊΠΎΠΌ Π³ΠΎΡΠΎΠ΄ΠΊΠ΅. Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈ Π½ΠΎΠΌΠ΅ΡΠ° Π·Π΄Π°Π½ΠΈΡ, ΠΈ ΡΡΠ°ΠΆΠ°, ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ΅Ρ Π΄Π»Ρ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π·Π΄Π°Π½ΠΈΡ ΠΈ ΡΡΠ°ΠΆΠ°.Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ°ΠΊΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π²Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ°. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΡΠΈΡΠΎΠ² Π΄Π»Ρ Π·Π΄Π°Π½ΠΈΠΉ Ρ 0 ΠΏΠΎ 40 ΠΈ ΡΡΠ°ΠΆΠ΅ΠΉ Ρ 0 ΠΏΠΎ 5.
Dim officeCounts (40, 5) ΠΊΠ°ΠΊ Π±Π°ΠΉΡ
ΠΠ²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ .
Π’ΡΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈΠΌΠ΅ΡΡ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅. Π’Π°ΠΊΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ x, y ΠΈ z ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°.Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡ Π²ΠΎΠ·Π΄ΡΡ Π° Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΎΡΠΊΠ°Ρ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ°.
ΠΡΠΈΠ³Π»ΡΡΠ΅Π½Π½Π°Ρ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π²ΠΎΠ·Π΄ΡΡ
Π° (99, 99, 24) ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½Π°Ρ
ΠΠΎΠ»Π΅Π΅ ΡΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ
Π₯ΠΎΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎ 32 ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ, ΡΠ΅Π΄ΠΊΠΎ Π±ΡΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ΅Ρ .
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΠΎΠ³Π΄Π° Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² ΠΌΠ°ΡΡΠΈΠ², ΠΎΠ±ΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π°, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ Ρ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π·Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ²
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΡΠΌΠΌΡ ΠΏΡΠΎΠ΄Π°ΠΆ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΡΡΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· 31 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ ΠΌΠ΅ΡΡΡΠ°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
Π’ΡΡΠΊΠ»ΡΠ΅ ΠΏΡΠΎΠ΄Π°ΠΆΠΈΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ (30) ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄Π½Ρ ΠΌΠ΅ΡΡΡΠ°, Π½ΠΎ ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΡΠ° Π² Π³ΠΎΠ΄Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Ρ 12 ΡΡΡΠΎΠΊΠ°ΠΌΠΈ (Π΄Π»Ρ ΠΌΠ΅ΡΡΡΠ΅Π²) ΠΈ 31 ΡΡΠΎΠ»Π±ΡΠΎΠΌ (Π΄Π»Ρ Π΄Π½Π΅ΠΉ), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
Π’ΡΡΠΊΠ»ΡΠ΅ ΠΏΡΠΎΠ΄Π°ΠΆΠΈΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ (11, 30) ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄Π°ΠΆ Π·Π° 5 Π»Π΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Ρ 5 ΡΠ»ΠΎΡΠΌΠΈ, 12 ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ 31 ΡΡΠΎΠ»Π±ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
Π’ΡΡΠΊΠ»ΡΠ΅ ΠΏΡΠΎΠ΄Π°ΠΆΠΈ ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ (4, 11, 30) ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΎΡ 0 Π΄ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ salesAmounts
ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π΄Π»ΠΈΠ½Π° Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΉ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ.Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π½ΠΎΠ²ΡΠΌ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ. Π’ΡΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
— 31, 372 ΠΈ 1860 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Dim
ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ New
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ CreateInstance, ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π²Π°ΡΠ΅ΠΌΡ ΠΊΠΎΠ΄Ρ ΠΌΠ°ΡΡΠΈΠ², ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π’Π°ΠΊΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½ΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΡ, ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΎΡ 0. ΠΡ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½ΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° GetLowerBound ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ LBound
.
Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅
.
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² VBA — ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅
ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ Ρ Π»ΡΠ±ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ 20, Ρ
ΠΎΡΡ Ρ Π²Π°Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π΅ Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»Π΅Π΅ 3 ΠΈΠ»ΠΈ 4 ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠΎΠ².
ΠΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎ 60 ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ.
ΠΡΠ΅Π½Ρ Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡΡ
ΠΈΠ»ΠΈ ΡΡΠ΅Ρ
ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ.
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π²ΡΠ΅Π³Π΄Π° Π΅ΡΡΡ ΡΡΠΎΠ»Π±ΡΡ ΠΈ ΡΡΡΠΎΠΊΠΈ (Ρ.Π΅. (1,1) (1,2) (1,3) ΠΈ Ρ. Π.).
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΠΌΠ΅ΡΡ vArrayName (1, 2, 1) Π² ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ???
Π€ΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ
ΠΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Dim.
Dim aCellValues ββ(ΠΎΡ 1 Π΄ΠΎ 10, 1 Π΄ΠΎ 100) ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ°
ΠΡΠΎ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ 1 Π΄ΠΎ 10, Π° Π²ΡΠΎΡΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ — ΠΎΡ 1 Π΄ΠΎ 100.
aCellValues ββ(2,3) = "some text"
Dynamic Arrays
ΠΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ Π² Π΄Π²ΡΡ ΡΡΡΠΎΠΊΠ°Ρ
Dim aNumbers () As Integer
ReDim aNumbers (ΠΎΡ 1 Π΄ΠΎ 10, ΠΎΡ 1 Π΄ΠΎ 100)
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ReDim, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΊ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ.
Π’ΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡ
Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°.
ΠΡΠΈΠ±ΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π»ΡΠ±ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅.
Dim sCellValues ββ(ΠΎΡ 1 Π΄ΠΎ 50, ΠΎΡ 1 Π΄ΠΎ 10) ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ°ReDim aCellValues ββ(ΠΎΡ 1 Π΄ΠΎ 50, ΠΎΡ 1 Π΄ΠΎ 20)
ReDim aCellValues ββ(ΠΎΡ 1 Π΄ΠΎ 50, ΠΎΡ 1 Π΄ΠΎ 20) ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ°
Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Preserve, Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ.
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Preserve, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΡΠΌ. Π‘ΡΡΠ°Π½ΠΈΡΡ Π€ΡΠ½ΠΊΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° .
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ.
Dim vArray As Variant
vArray = Array (Array ("one"), Array ("Two"), Array ("three"), Array ("four"))
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ
ΠΠΎΠ»ΡΡΠΈΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
.
Π’ΠΈΠΏΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ
Π² ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
.
ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΠΈΠΏ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Ρ
ΡΠ°Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
.
Β© 2020 Better Solutions Limited. ΠΡΠ΅ ΠΏΡΠ°Π²Π° Π·Π°ΡΠΈΡΠ΅Π½Ρ. Β© 2020 Better Solutions Limited TopPrevNext.