Anzeige
Archiv - Navigation
1544to1548
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
Inhaltsverzeichnis

Zusammenfassen an Hand der Zeilennr. , aber wie?

Zusammenfassen an Hand der Zeilennr. , aber wie?
28.02.2017 06:29:42
Florian
Hi Zusammen,
und zwar habe ich folgendes Problem, bei dem ich einfach nicht weiter komme und es würde meine Arbeit wenn ich es hinbekommen extrem erleichtern.
Ich habe in einer Exceldatei mehrere Arbeitsblätter mit Namen "Kupfer"; "Messing"; "Alu" u.s.w
In den Zellen N8 bis N2000 der jeweiligen Arbeitsblättern stehen bei bestimmten Bedingungen TEILWEISE Zahlen. Die Zahlen sind auch gleichzeit Zeilennummern.
Bsp.:
"Kupfer" N8:N49 ist leer (bzw. ""), N50= 50, N51= 51, N52= 52, N53:N89 ist leer u.s.w
ähnlich in den anderen Arbeitsblättern
"Messing" N8:N12 ist leer, N13= 13, N14= 14, N15:N24 ist leer, N25= 25 u.s.w

Jetzt würde ich gerne auf einem neuen Arbeitsblatt(eventuell mit dem Namen "Auswertung") die Werte aus den jeweiligen Zeilen bzw. wenn es möglich aus den ersten 11 Zellen der jeweilegen Zeile (A bis K) auflisten.
Also wie aus genannten Beispiel oben
aus "Kupfer" die Werte aus A50:K50, dann in der nächten Zeile die Werte aus A51:K51......in der nächten Zeile aus "Messing" die Werte A13:K13 u.s.w
Wie kann ich mein Vorhaben umsetzten?
Ich Danke euch für jeden Vorschlag

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zusammenfassen an Hand der Zeilennr. , aber wie?
28.02.2017 08:27:23
harry
Hallo Florian,
hier mal ein Ansatz auf VBA-Basis
Sub zusammen()
Dim zielzeile As Integer
Dim wks As Worksheet
Dim ende As Integer
Dim spalte As Integer
Dim zeile As Integer
zielzeile = 1
For Each wks In Worksheets
If wks.Name  "Auswertung" Then
ende = wks.Cells(Rows.Count, 14).End(xlUp).Row
For zeile = 1 To ende
If wks.Cells(zeile, 14)  "" Then
For spalte = 1 To 13
Sheets("auswertung").Cells(zielzeile, spalte) = wks.Cells(zeile, spalte)
Next
zielzeile = zielzeile + 1
End If
Next
End If
Next
End Sub
musst Du natürlich noch an Deine Gegebenheiten anpassen, sollte aber grundsätzlich laufen
Grüße
harry
Anzeige
noch eine kurze frage....
28.02.2017 09:19:18
Florian
Hi,
Danke für den Code. Ich habe den Code jetzt noch nicht ausprobiert, aber muss ich nicht die Arbeitsblätter noch auflisten?
Es gibt nämlich noch Arbeitsblätter in der Datei die, nicht abgefragt weden sollen.
AW: noch eine kurze frage....
28.02.2017 09:49:35
harry
Hallo Florian,
achso, ja dann wäre es vielleicht sinnvoll alle Blätter, die abgefragt werden sollen, mit einem gemeinsamen Kennzeichen zu versehen, z.B. _Kupfer, _Messing usw.
Dann könnte man mit der Bedingung
if left(wks.name,1)  ="_" then

die richtigen Blätter rausfiltern. Dann spart man sich das lästige Auflisten der ganzen Blätter
Grüße
harry
Anzeige
Läuft Prima! Formatierung auch mit ausgeben?
28.02.2017 12:56:47
Florian
Hi,
Läuft Super! Habe es noch ein bisschen umgeschrieben und es braucht natürlich ein wenig Zeit um alle Arbeitsblätter auszulesen.... aber läuft! Vielen Dank nochmal
Ist es eigentlich auch möglich die Formatierung aus den Zeilen mit auszugeben?
Gruß Flo
Hier noch ma mein Code

Sub zusammen()
Dim zielzeile As Integer
Dim wks As Worksheet
Dim ende As Integer
Dim spalte As Integer
Dim zeile As Integer
zielzeile = 1
For Each wks In Worksheets
If wks.Name = "Kupfer" And wks.Name  "Auswertung" Then
ende = wks.Cells(Rows.Count, 14).End(xlUp).Row
For zeile = 1 To ende
If wks.Cells(zeile, 14)  "" Then
For spalte = 1 To 13
Sheets("Auswertung").Cells(zielzeile, spalte) = wks.Cells(zeile, spalte)
Next
zielzeile = zielzeile + 1
End If
Next
ElseIf wks.Name = "Messing" And wks.Name  "Auswertung" Then
ende = wks.Cells(Rows.Count, 14).End(xlUp).Row
For zeile = 1 To ende
If wks.Cells(zeile, 14)  "" Then
For spalte = 1 To 13
Sheets("Auswertung").Cells(zielzeile, spalte) = wks.Cells(zeile, spalte)
Next
zielzeile = zielzeile + 1
End If
Next
'und immer weiter so......
End If
Next
End Sub

Anzeige
AW: Läuft Prima! Formatierung auch mit ausgeben?
28.02.2017 13:16:53
harry
Hallo Florian,
das ist etwas suboptimal,
du durchläufst jedesmal alle Tabellenblätter und schaust dann ob es z.B. "kupfer" und nicht "auswertung" heißt und legst dann mit dem immer gleichen Code innerhalb der Schleife los! Das ist kein guter Programmierstil! Stell Dir vor Du willst innerhalb der Schleife was ändern, dann musst Du es x-mal machen. Wieso machst Du es nicht wie von mir vorgeschlagen mit dem gemeinsamen Kennzeichen in den entsprechenden Tabellenblättern? Dann hast Du nur eine Schleife, prüfst, ob das Kennzeichen da ist und legst los.
Ist nur ein Vorschlag, damit kannst Du Dir eine Menge Arbeit ersparen.
Format übertragen kannst Du z.B. mit
    Range("Quellzelle").Copy
Range("Zielzelle").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

Grüße
harry
Anzeige
AW: Läuft Prima! Formatierung auch mit ausgeben?
28.02.2017 13:31:22
Florian
Hi,
Das mit "_" ist natürlich eine geniale und einfache Idee. Leider habe ich noch ein paar andere Codes und Bezüge die sich auf die Arbeitsblätter beziehen.
Klar ist das kein Meisterstück und Ich weiß auch das es natürlich Suboptimal ist.
Ich wusste mir halt nicht anders zu helfen, da ich so gut wie keine VBA Kenntnisse habe.
Ich hatte mir auch schon gedacht die Arbeitsblätter mit einer Variablen zu bennnen, leider weis ich da auch nicht so recht weiter
Mit dem wks.Name "Auswertung" hast du natürlich recht, das ist unnötig.
Gruß Flo

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige