Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Datenzuweisung über Array?
#1
Hi,

ich mache eine Wetterstatistik und muß da diverse Daten kopieren.

Code:
For i = loLetzte24 To loLetzte
     With Workbooks("Wetterdaten-Stunde.xlsb").Sheets(strJahr)
        ' "Wetterdaten-Stunde" Spalte B bekommt Wert aus "Wetterdaten" Spalte B
        .Range("B" & loNeueTarget).Value = Range("B" & i + 1).Value    ' Datum
        .Range("C" & loNeueTarget).Value = Range("F" & i + 1).Value    ' Außen-Temp
        .Range("D" & loNeueTarget).Value = Range("O" & i + 1).Value    ' letzte Stunde
        .Range("E" & loNeueTarget).Value = Range("P" & i + 1).Value    ' 24 Stunden
        .Range("F" & loNeueTarget).Value = Range("Q" & i + 1).Value    ' Woche
        .Range("G" & loNeueTarget).Value = Range("R" & i + 1).Value    ' Monat
        .Range("H" & loNeueTarget).Value = Range("S" & i + 1).Value    ' Total
     End With
     
     loNeueTarget = loNeueTarget + 1
     
     ' "Wetterdaten" Spalte X bekommt Wert aus "Wetterdaten" Spalte B
     Range("X" & i).Value = Range("B" & i).Value
     Range("Y" & i).Value = Range("F" & i).Value
     Range("Z" & i).Value = Range("O" & i).Value
     Range("AA" & i).Value = Range("P" & i).Value
     Range("AB" & i).Value = Range("Q" & i).Value
     Range("AC" & i).Value = Range("R" & i).Value
     Range("AD" & i).Value = Range("S" & i).Value
     
     With Sheets("Zusammenfassung")
        ' "Wetterdaten" Sheet "Zusammenfassung" Spalte B bekommt Wert aus "Wetterdaten" Spalte B
        .Range("A" & i).Value = Range("B" & i).Value
        .Range("B" & i).Value = Range("F" & i).Value
        .Range("C" & i).Value = Range("O" & i).Value
        .Range("D" & i).Value = Range("P" & i).Value
        .Range("E" & i).Value = Range("Q" & i).Value
        .Range("F" & i).Value = Range("R" & i).Value
        .Range("G" & i).Value = Range("S" & i).Value
     End With
  Next i

Kann ich das auch über ein Array machen, geht das dann schneller?
Gruß Ralf

?mage

Die deutsche Rechtschreibung ist Freeware, d.h. du kannst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, deswegen darfst du sie nicht verändern oder in veränderter Form veröffentlichen.
to top
#2
Hallo Ralf,

das ginge sicher schneller.
Du kannst aber auch ohne Arrays schon etwas Zeit sparen, wenn Du Bereiche nicht in einer Schleife überträgst sondern als Bereich.

Unten ein Beispielcode auf der Grundlage Deines Codes, nur mal die erste Zeile:


Code:
   i = loLetzte - loLetzte24
    With Workbooks("Wetterdaten-Stunde.xlsb").Sheets(strJahr)
       ' "Wetterdaten-Stunde" Spalte B bekommt Wert aus "Wetterdaten" Spalte B
       .Range("B" & loNeueTarget & ":B" & loNeueTarget + i).Value = Range("B" & loLetzte24 & ":B" & i + 1).Value  ' Datum
    End With


Kann sein, dass ich etwas übersehen habe, und es nicht ganz passt, aber das Prinzip solltest Du erkennen können.
Außerdem, falls Du es nicht in Deinem Code eingearbeitet hast, würde ich die Berechnung zu Beginn abschalten und am Ende wieder einschalten.
Das könnte auch noch einiges an Zeit sparen.
Gruß Atilla

Excel 2007
to top
#3
Hi Atilla,

(29.03.2015, 21:32)atilla schrieb: Unten ein Beispielcode auf der Grundlage Deines Codes, nur mal die erste Zeile:
[...]
Kann sein, dass ich etwas übersehen habe, und es nicht ganz passt, aber das Prinzip solltest Du erkennen können.
Außerdem, falls Du es nicht in Deinem Code eingearbeitet hast, würde ich die Berechnung zu Beginn abschalten und am Ende wieder einschalten.
Das könnte auch noch einiges an Zeit sparen.

danke, das ist eine gute Idee.
Das werde ich morgen mal testen, heute komme ich nicht mehr dazu.
Gruß Ralf

?mage

Die deutsche Rechtschreibung ist Freeware, d.h. du kannst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, deswegen darfst du sie nicht verändern oder in veränderter Form veröffentlichen.
to top
#4
Hi Atilla,

(29.03.2015, 21:32)atilla schrieb: Unten ein Beispielcode auf der Grundlage Deines Codes, nur mal die erste Zeile:

Jetzt wollte ich den Code testen, aber nun habe ich ein neues Problem.

Dieser Code

Code:
  strText = Space(LOF(lngFN))                          ' String erzeugen mit Länge des Datei-Inhaltes

der unter Office 2010 funktioniert, bringt eine Fehlermeldung:

Projekt oder Bibliothek nicht gefunden!

Und das Space ist markiert.

Es fehlt bei den Verweisen wohl das ATPVBAEN.XLAM
Wo bekomme ich das für 2013 her?
Oder kann ich die Benutzung das AddIn umgehen?
Gruß Ralf

?mage

Die deutsche Rechtschreibung ist Freeware, d.h. du kannst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, deswegen darfst du sie nicht verändern oder in veränderter Form veröffentlichen.
to top
#5
Hallo Ralf,

zum Testen könntest Du es mal so versuchen:


Code:
strText = VBA.Space(LOF(lngFN))    


Wird unter den Verweisen ein defekter Verveis angezeigt?
Wenn ja, dann lösch ihn.
Gruß Atilla

Excel 2007
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Array Formel mit SVERWIES Jacko 1 215 24.05.2016, 08:57
Letzter Beitrag: steve1da
  Excel VBA: Suchen und ersetzen mittels Array sharky51 17 2.635 15.12.2015, 14:10
Letzter Beitrag: Rabe
  Kürze Schreibweise für Array gesucht Schülerin 4 698 01.09.2015, 18:52
Letzter Beitrag: BoskoBiati
  VBA Berichtsfilter / Array's Look4Fun 1 498 02.08.2015, 16:58
Letzter Beitrag: schauan
  Min-Array ohne Nullwerte mit Spezialanforderung Opa-Oli 5 966 05.07.2015, 20:56
Letzter Beitrag: schauan
  Recordset in Array dann transponieren Schmittklaus 2 711 29.01.2015, 12:36
Letzter Beitrag: Rabe
  Array mit Formel mykophil 4 891 09.01.2015, 16:37
Letzter Beitrag: mykophil

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste