Avatar billede oyejo Nybegynder
01. marts 2004 - 16:28 Der er 14 kommentarer og
2 løsninger

Data fra mange workbooks til 3-D Array

Etter god hjelp her på Eksperten kan jeg å legge data
fra et regneark til en tabell slik....

MyArray = ActiveSheet.Range(Cells(1, 1), _
Cells(ActiveSheet.Range("A6500").End(xlUp).Row, _
ActiveSheet.Range("IV1").End(xlToLeft).Column))

Deretter kan jeg legge den redigerte tabellen til
et annet regneark slik... ( takk til bak )

Range("A1").Resize(UBound(MyArray, 1), UBound(MyArray, 2) ) = MyArray

Så det store spørsmålet:
Jeg har flere forskjellige workbooks, hver med et ark.
Kan jeg benytte et Array med 3 dimmensjoner.
For så på en enkel måte legge data fra
flere workbooks til samme Array?

Håper jeg har ordlagt meg slik at det er til å forstå:-)

Etterpå ønkser jeg en løsning for legge data fra et
3-D Array til flere ark i en arbeidsbok.
Avatar billede oyejo Nybegynder
01. marts 2004 - 16:46 #1
PSSST!!
Jeg kan fikse det med for-løkker,
men jeg er ute etter en løsnig uten bruk av for-løkker. 
Slik som: MyArray (2,,) = ActiveSheet.Range.....
01. marts 2004 - 17:59 #2
Du kan ikke få en løsning der er ligeså "slik" som den du bruger til at lave et 2-D array med.

Hvis du VIL lave det med et 3-D array, så tror jeg du kommer til at bruge endnu flere for-lykker og ubound-sætninger og row/column-counts fordi du hele tiden skal checke om dit array er stort nok - ellers skal der laves Redim Preserve på dit 3-D
HUSK hvis du har et 3-D array, så kan du ikke indlæse/udskrive data ligeså nemt som du gør ovenfor..... så SKAL der for-løkker til både at indlæse i og udskrive fra dit Array...........!!

3-D array giver det væsentlige mere arbejde, og du mister endda smart funktionalitet, som du selv skal til at lave MED for-løkker.......
01. marts 2004 - 18:00 #3
Disse sætninger virker KUN på et 2-D array, FORDI selve arket er 2-D (rækker og kolonner)

MyArray = ActiveSheet.Range(Cells(1, 1), _
Cells(ActiveSheet.Range("A6500").End(xlUp).Row, _
ActiveSheet.Range("IV1").End(xlToLeft).Column))

Range("A1").Resize(UBound(MyArray, 1), UBound(MyArray, 2) ) = MyArray
Avatar billede oyejo Nybegynder
02. marts 2004 - 07:10 #4
Hei Flemming
Jeg trodde nok det var slik som du sier.
Men jeg lar spørsmålet så åpent ut uken,
i tilfelle noen skulle ha andre forslag.
Avatar billede bak Forsker
02. marts 2004 - 08:26 #5
Jeg tror heller ikke du kommer meget længere her, oyejo.
3. dimension skal nok afleveres lidt mere "manuelt", som flemming skriver
lidt a'la det her:

Option Base 1
Sub test()
Dim x(2)
Dim y
y = Sheet1.Range("A1:A5")
x(1) = y
y = Sheet2.Range("A1:A12")
x(2) = y
Sheet3.Range("A1:B5") = x(1)
Sheet3.Range("B1:B12") = x(2)
End Sub

det virker ikke bare at skrive
Sheet3.Range("A1:B12") = x
fordi du vil forsøge at aflevere et 3D array på en 2D regneark
Avatar billede oyejo Nybegynder
02. marts 2004 - 13:02 #6
Hei flemming og bak
Det er vel på tide å dele pointene?
bak, du får sende et svar.
kanskje en av dere kan svare på denne med det samme:

Slik kan jeg tilordne verdier til en 1-D array:
MyArray = Array(1, 3, 2, 34, 35, 7)

Hvordan blir det for 2-D Arrays?
Avatar billede oyejo Nybegynder
02. marts 2004 - 13:23 #7
en lille til ;-)

Er det en fin måte å "tømme" en tabell på?
Alle elementer lik ""
Avatar billede oyejo Nybegynder
02. marts 2004 - 13:24 #8
3D tabell
Avatar billede bak Forsker
02. marts 2004 - 13:33 #9
til den sidste (ikke testet)
Redim myarray(ubound(myarray,1)ubound(myarray,2),ubound(myarray,3))
Avatar billede bak Forsker
02. marts 2004 - 13:33 #10
ups
Avatar billede bak Forsker
02. marts 2004 - 13:39 #11
til den første
MyArray = Array(Array(1, 2, 3, 4), Array(5, 6, 7, 8))

Husk Option Base 1
Avatar billede oyejo Nybegynder
02. marts 2004 - 13:43 #12
Håper 30 / 30 er greit?
flemming svarte først, bak mest :-)
Avatar billede bak Forsker
02. marts 2004 - 13:45 #13
fint med mig :-)
Avatar billede bak Forsker
02. marts 2004 - 13:55 #14
Bemærk lige at inden du kan bruge 2D arrayet rigtigt skal det vendes
myarray = Application.Transpose(Array(Array("A", 2, 3, 4), Array(5, 6, 7, 8)))
Avatar billede oyejo Nybegynder
02. marts 2004 - 14:11 #15
Transpose? Den har jeg litt problermer med.
Har det med
Dim MyArray(4,2), i forhold til Dim MyArray(2,4) ?
Hvorfor MyArray(1,1) = "A" ?

Nå må jeg stoppe!  ,beklager at jeg spør og spør :-)
Avatar billede bak Forsker
02. marts 2004 - 14:18 #16
Yeps
ellers ville det være
MyArray = Array(Array(1, 2) array( 3, 4), Array(5, 6),array( 7, 8))


Hvorfor MyArray(1,1) = "A" ?
Fordi jeg lige ville teste med en lille streng også :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester