Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
572to576
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
572to576
572to576
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Daten in Array einlesen
21.02.2005 22:45:36
Jochen
Hallo,
wie kann ich aus 4 verschieden Blättern die Zahlenwerte in einen einzigen Array lesen?
Die Werte stehen immer in Spalte A von A1 bis A?
Danke Jochen

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten in Array einlesen
Boris
Hi Jochen,
z.B. in der Art:
Option Explicit

Sub rein_damit()
Dim arr() As Variant
Dim anzahl As Long
Dim i As Long, l As Long, x As Long
For i = 1 To 4
anzahl = anzahl + WorksheetFunction.CountA(Sheets(i).[a:a])
Next i
ReDim arr(anzahl)
i = 0
For l = 1 To 4
With Sheets(l)
For x = 1 To .[a65536].End(xlUp).Row
If Not IsEmpty(.Cells(x, 1)) Then
arr(i) = .Cells(x, 1)
i = i + 1
End If
Next x
End With
Next l
End Sub

Grüße Boris
AW: Daten in Array einlesen
Jochen
Hi,
im Prinzip klappt das, nur, dass meine Blätter nicht den Index 1 bis 4 haben.
Aufgrund der Struktur kann ich das auch nicht ändern. Die Blätter müßten irgendwie
über ihren Namen angesprochen werden, aber wie?
Kannst du mir nochmal helfen?
Danke Jochen
Anzeige
AW: Daten in Array einlesen
21.02.2005 23:22:11
Josef
Hallo Jochen!
Z.B so.


      
Sub ArrayMulti()
Dim rng As Range
Dim arr As Variant
Dim tmp As String
Dim wks As Worksheet
Dim lastRow As Long
   
For Each wks In ThisWorkbook.Worksheets
   
   lastRow = IIf(wks.Range(
"A65536") <> "", 65536, _
               wks.Range(
"A65536").End(xlUp).Row)
   
   arr = wks.Range(
"A1:A" & lastRow)
   
   tmp = tmp & Join2(arr, 
";")
   
   
Next
arr = Split(Left(tmp, Len(tmp) - 1), 
";")
End Sub
Function Join2(field As VariantOptional delimit As StringAs String
'zweidimensionales array zu string umwandeln
Dim n As Long, m As Long
Dim temp As String
If delimit = "" Then delimit = " "
   
For n = LBound(field, 2) To UBound(field, 2)
      
For m = LBound(field, 1) To UBound(field, 1)
      
      temp = temp & field(m, n) & delimit
      
      
Next
   
Next
Join2 = temp
End Function 


Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Anzeige
Oups! nicht aktualisiert;-)) o.T.
21.02.2005 23:22:56
Josef
Gruß Sepp
AW: Daten in Array einlesen
Jochen
Hi,
danke erstmal. Kann es sein, dass er mir da einen String macht? Ich brauche aber
Zahlen. Kannst du mir da nochmal helfen?
Danke Jochen
AW: Daten in Array einlesen
21.02.2005 23:49:25
Josef
Hallo Jochen!
Hie eine Variante in der du die Blattnamen angeben kannst!
Das Array ist vom Typ Variant, der inhalt hängt also von den Daten ab!
Wenn Zahlen in deinen Zellen stehen, dann sind auch Zahlen im Array!


      
Option Explicit
Sub ArrayMulti()
Dim rng As Range
Dim arr As Variant
Dim tmp As String
Dim wks As Worksheet
Dim lastRow As Long, n As Integer
Dim SheetArray As Variant
'Hier die Tabellennamen angeben!
SheetArray = Array("Tabelle1""Tabelle2""Tabelle3""Tabelle4")
   
For n = 0 To UBound(SheetArray)
   
   lastRow = IIf(Sheets(SheetArray(n)).Range(
"A65536") <> "", 65536, _
               Sheets(SheetArray(n)).Range(
"A65536").End(xlUp).Row)
   
   arr = Sheets(SheetArray(n)).Range(
"A1:A" & lastRow)
   
   tmp = tmp & Join2(arr, 
";")
   
   
Next
   
'Hier das komplette Array!
arr = Split(Left(tmp, Len(tmp) - 1), ";")
End Sub
Function Join2(field As VariantOptional delimit As StringAs String
'zweidimensionales array zu string umwandeln
Dim n As Long, m As Long
Dim temp As String
If delimit = "" Then delimit = " "
   
For n = LBound(field, 2) To UBound(field, 2)
      
For m = LBound(field, 1) To UBound(field, 1)
      
      temp = temp & field(m, n) & delimit
      
      
Next
   
Next
Join2 = temp
End Function 


Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Anzeige
AW: Daten in Array einlesen
Jochen
Hi,
irgenwie macht er aus Zahlen(Format "00000") einen dreistelligen String, so kann
ich das aber nicht verwenden, es müssen Zahlen bleiben.
Weißt du noch weiter?
Danke Jochen
AW: Daten in Array einlesen
22.02.2005 00:19:50
Josef
Hallo Jochen!
Wenn du Zahlen mit "00000" formatierst, dann gehen die führenden Nullen
natürlich verloren!
00500 ist nunmal 500!
Du kannst doch beim Auslesen des Arrays die Zahlen wieder Formatieren!

Format(arr(x), "00000")

Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
AW: Daten in Array einlesen
Jochen
Hi,
ok, aber es werden Strings übergeben, abgesehen mal vom Format, muss ich die
jetzt auch wieder umwandeln?
Danke Jochen
Anzeige
AW: Daten in Array einlesen
22.02.2005 00:27:49
Josef
Hallo Jochen!
Wenn die Zahlen vorher mit führenden Nullen Formatiert sind, dann sind
die Zahlen ja keine Zahlen sondern Text!
Probiers doch einfach mal aus!
Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
AW: Daten in Array einlesen
Jochen
Hi,
ja hab ich doch, das Format "00000" ist ein benutzerdefiniertes Zahlenformat,
kein Text.
Danke Jochen
AW: Daten in Array einlesen
22.02.2005 00:38:40
Josef
Hallo Jochen!
Ich meinte, du sollst mal Probieren die Daten aus dem Array auszulesen und
zu formatieren!
Was willst du mit dem Array den machen?
Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Anzeige
AW: Daten in Array einlesen
Jochen
Hi,
letztlich sind die Werte für ein externes Programm, aber soweit bin ich noch nicht,
möchte erstmal diesen teilschritt begreifen.
Wenn ich die Werte in eine Tabelle schreibe, wandelt das excel wohl automatisch um:
For i = LBound(arr) To UBound(arr)
Sheets1.Cells(i + 1, 1) = arr(i)
Next
Aber extern muss ich das wohl so machen:
For i = LBound(arr) To UBound(arr)
Sheets1.Cells(i + 1, 1) = CDbl(arr(i))
Next
Ist das so richtig?
Danke Jochen
Ja! o.T.
22.02.2005 00:54:51
Josef
Gruß Sepp
1000 Dank! oT
Jochen
o

228 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige