VBA transponavimo masyvas

Ši pamoka išmokys jus, kaip perkelti masyvą naudojant VBA.

Transponuoti masyvą

Ši funkcija perkelia 2 matmenų masyvą:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Funkcija TransposeArray („MyArray As Variant“) Kaip variantasDim x As Long, y As LongDim maxX As Long, minX As LongMaksimalus ilgis, minimalus ilgisDim tempArr As Variant„Gaukite viršutinę ir apatinę ribasmaxX = UBound („MyArray“, 1)minX = LBound („MyArray“, 1)maxY = UBound („MyArray“, 2)minY = LBound („MyArray“, 2)„Sukurkite naują„ Temp Array “ReDim tempArr (nuo minX iki maxX, minY iki maxX)„Perkelkite masyvąX = minX iki maxXY = minY iki maxYtempArr (y, x) = MyArray (x, y)Kitas yKitas x„Išvesties masyvasTransposeArray = tempArrPabaigos funkcijaSub TestTransposeArray ()„Dim testArr“ (nuo 1 iki 3, nuo 1 iki 2) kaip variantasDim outputArr As Variant„Priskirkite masyvo vertestestArr (1, 1) = "Styvas"testArr (1, 2) = "Džonsonas"testArr (2, 1) = "Ryanas"testArr (2, 2) = "Džonsonas"testArr (3, 1) = "Andrius"testArr (3, 2) = "Skotas"„Skambučio perkėlimo funkcijaoutputArr = TransposeArray (testArr)'Bandymo išvestis„MsgBox“ išvestis „Ar“ (2, 1)Pabaiga Sub

Norėdami išbandyti šią funkciją, iškvieskite procedūrą TestTransposeArray: čia sukuriamas pradinis masyvas testArr, o outputArr yra galutinis perkeltas masyvas.

Darbo lapas Funkcija. Perkelti

Vietoj to, galbūt norėsite perkelti masyvą į „Excel“. Norėdami tai padaryti, galite naudoti „Excel“ perkėlimo darbalapio funkciją.

Ši procedūra perkelia 2D masyvą į „Excel“ diapazoną naudodami funkciją „Perkelti darbalapį“:

12345678910111213141516171819202122232425 Sub TestTransposeArray_Worksheetfx ()Dim maxX As Long, minX As LongMaksimalus ilgis, minimalus ilgis„Sukurkite masyvą ir priskirkite vertybes„Dim MyArray“ (nuo 1 iki 3, nuo 1 iki 2) kaip variantasMyArray (1, 1) = "Steve"„MyArray“ (1, 2) = „Džonsonas“„MyArray“ (2, 1) = „Ryan“„MyArray“ (2, 2) = „Džonsonas“MyArray (3, 1) = "Andrius"„MyArray“ (3, 2) = „Skotas“„Gaukite viršutinę ir apatinę ribasmaxX = UBound („MyArray“, 1)minX = LBound („MyArray“, 1)maxY = UBound („MyArray“, 2)minY = LBound („MyArray“, 2)„Perkelkite masyvą į„ Excel “Diapazonas ("a1"). Keisti dydį (maxY - minY + 1, maxX - minX + 1) .Vertė = _Application.WorksheetFunction.Transpose („MyArray“)Pabaiga Sub

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave