Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
712to716
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
712to716
712to716
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

@Josef Ehrensberger

@Josef Ehrensberger
02.01.2006 10:07:35
Daniel
Hallo Josef,
du hattest mir noch vor den Feiertagen ein Makro gemacht, das in einem Tabellenblatt Summen bildet wenn Texte übereinstimmen und die Ergebnisse in einem weiteren Blatt ausgibt.
Nun hätte ich noch eine große Bitte an Dich. Kann man die Ausgabe ins Blatt "Auswertungen" auch alphabetisch vornehmen? Nach den Texten im Blatt Bericht_Daten in Spalte C sortiert. Das wäre klasse!!! Da ich alle komplett automatisch haben möchte, ist ein manuelles sortieren über das Menü nicht gut.
Ich wäre Dir sehr dankbar!
Grüße,
Daniel

Sub DatenHolen()
Dim objSH1 As Worksheet, objSH2 As Worksheet
Dim lngLastRow As Long, lngFirstRow As Long, lngRow As Long, lngIndex As Long, lngMatch As Variant
Dim varArray1 As Variant, varArray2() As Variant, varArray3() As Variant
Set objSH1 = Sheets("Bericht_Daten")
Set objSH2 = Sheets("Auswertung")
lngFirstRow = 5 '--> Startzeile --> anpassen
lngLastRow = objSH1.Range("C65536").End(xlUp).Row
varArray1 = objSH1.Range(objSH1.Cells(lngFirstRow, 3), objSH1.Cells(lngLastRow, 6))
Redim Preserve varArray2(lngIndex)
Redim Preserve varArray3(lngIndex)
For lngRow = 1 To UBound(varArray1, 1)
If lngRow = 1 Then
varArray2(lngIndex) = varArray1(lngRow, 1)
varArray3(lngIndex) = varArray1(lngRow, 4)
Else
lngMatch = Application.Match(varArray1(lngRow, 1), varArray2, 0)
If Not IsNumeric(lngMatch) Then
lngIndex = lngIndex + 1
Redim Preserve varArray2(lngIndex)
Redim Preserve varArray3(lngIndex)
varArray2(lngIndex) = varArray1(lngRow, 1)
varArray3(lngIndex) = varArray1(lngRow, 4)
Else
varArray3(lngMatch - 1) = varArray3(lngMatch - 1) + varArray1(lngRow, 4)
End If
End If
Next
'Ausgabe ab Zeile zwei!
objSH2.Range("A2:A" & UBound(varArray2) + 2) = Application.Transpose(varArray2)
objSH2.Range("B2:B" & UBound(varArray2) + 2) = Application.Transpose(varArray3)
''Soll die Ausgabe zB. erst ab Zeile fünf erfolgen, dann
'objSH2.Range("A5:A" & UBound(varArray2) + 5) = Application.Transpose(varArray2)
'objSH2.Range("B5:B" & UBound(varArray2) + 5) = Application.Transpose(varArray3)
End Sub

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: @Josef Ehrensberger
02.01.2006 10:24:25
Ramses
Hallo
Denken ist die erste EXCEL-Anwender Pflicht;-)
Was hältst du davon, das sortieren per Makrorekorder aufzuzeichnen und ans Ende deines Codes anzuhängen.
Dann hast du alles automatisch ;-)
Gruss Rainer
AW: @Josef Ehrensberger
02.01.2006 10:27:34
Daniel
Ok, da hast du natürlich Recht. Dann versuche ich das mal.
Grüße,
Daniel
AW: @Josef Ehrensberger
02.01.2006 10:41:14
Daniel
Hallo,
also ich habe das jetzt aufgezeichnet.
Leider werden aber nur die Texte in Spalte A sortiert und nicht die dazugehörigen Zahlen in Spalte B. Dabei hatte ich das so aufgezeichnet!
was muss ich da noch ändern?
Sheets("Auswertungen").Select
Columns("A:A").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Grüße,
Daniel
Anzeige
AW: @Josef Ehrensberger
02.01.2006 10:44:10
Ramses
Hallo
"...Dabei hatte ich das so aufgezeichnet!..."
Hast du nicht.
Du hast Spalte A markiert, und nur danach sortiert.
Das zeigt der aufgezeichnete Code ganz deutlich
Columns("A:A").Select
Wenn du das ganze richtig gemacht hättest, hätte der Makrorekorder
Columns("A:B").Select
aufgezeichnet.
Gruss Rainer
AW: @Josef Ehrensberger
02.01.2006 10:48:00
Daniel
okay, danke.
Wahrscheinlich weil ich das über "Markierung erweitern" gemacht hatte.
Grüße,
Daniel
Nochmal eine Frage
02.01.2006 11:31:15
Daniel
Hallo,
mir ist noch ein Problem mit dem Makro aufgefallen in Zusammenhang mit dem Inhalt des Tabellenblattes.
Das Makro sucht ja in Spalte C nach übereinstimmenden Texten um dann die Zahlen die in Spalte F dieser Zeilen stehen zu addieren.
Die Texte in Spalte C werden durch Formeln erzeugt. Leider kommt es ab und zu zu Fehlern, die sich aber nicht vermeiden oder umgehen lassen. Daher stehen manchmal in Spalte C Fehler. Sobald das der Fall ist stoppt das Makro mit einem Fehler.
Bibt es eine Möglichkeit dies zu umgehen? So dass diese Zeilen mit den fehlern komplett übersprungen werden?
Danke,
Daniel
Anzeige
AW: Nochmal eine Frage
02.01.2006 11:39:53
Ramses
Hallo
sorge in den Formeln dafür, dass keine Fehler entstehen ;-)
C1 = A1/B1
Wenn in B1 nun kein Wert ist, dann steht in C1 "#DIV0"
Schreibe stattdessen in C1
=WENN(ISTFEHLER(A1/B1);"";A1/B1)
Dann taucht in C kein Fehler mehr auf
Gruss Rainer
AW: Nochmal eine Frage
02.01.2006 11:45:53
Daniel
Das ist klar.
So einfach ist es aber leider nicht. In diesen Zellen werden Zahlen per Formel aus einem anderen Programm gezogen. Und hier entsteht der Fehler, den man nicht vermeiden kann.
Grüße,
Daniel
AW: Nochmal eine Frage
02.01.2006 11:53:36
Ramses
Hallo
Fehler kann man immer vermeiden, aber ich bin kein Hellseher was deine Daten anbelangt und wo die herkommen.
Dann musst du halt eine "On Error Resume Next" anweisung in dein Makro einbauen.
Gruss Rainer
Anzeige
AW: Nochmal eine Frage
02.01.2006 12:41:35
Daniel
Hi,
leider kenne ich mich dazu zu wenig aus, um das selbst einzubauen.
Könntest du mir da vielleicht trotzdem helfen?
Danke,
Daniel
AW: Nochmal eine Frage
02.01.2006 14:41:12
Ramses
Hallo
Setze die Zeile
On Error Resume Next
an die erste Zeile deines Makros.
Ansonsten ist die VBA-Hilfe da sehr hilfreich wenn du z.B. Error als Suchbegriff eingeben würdest.
Gruss Rainer
AW: Nochmal eine Frage
02.01.2006 14:44:16
Ramses
Hallo
Setze die Zeile
On Error Resume Next
an die erste Zeile deines Makros.
Ansonsten ist die VBA-Hilfe da sehr hilfreich wenn du z.B. Error als Suchbegriff eingeben würdest.
Gruss Rainer
AW: @Josef Ehrensberger
02.01.2006 10:44:27
hannes
Hallo Daniel
Mußt Coumns so ändern, dass A: bis zB wo deine Letzte Splate ist möglichweise K
würde dann heißen Columns("A:K").Select
Grüße und prosit
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige