Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1720to1724
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

Werte berechnen

Werte berechnen
16.11.2019 17:20:58
Gerhard
Hallo zusammen...
Ich muss eine txt Liste (13 Spalten, kommagetrennt) in Excel via VBA importieren, das konnte ich durch googlen bereits lösen.
Via Autofilter habe ich sie aufbereitet, nicht relevante Spalten ausgeblendet und sortiert...
Jetzt komme ich aber zum ersten Problem:
Diese Liste umfasst folgende Werte:
In der letzten Spalte is immer das Start und Enddatum zum jeweiligen Namen.
Jetzt sollen die Werte aus Spalte C voneinander abgezogen werden.
Ich versuche es in Worten zu schreiben, was ich suche:
Beginne in Zeile 2 Spalte A, Suche gleiche Namen und das dazugehörige höchste Datum und hole aus dieser Zeile den Wert aus Spalte C. Ziehe von diesem,
den beim niedrigsten Datum in Spalte C stehenden Wert, ab. Also ich will die vom 10.11 bis zum jüngsten Datum erreichten Kills berechnen lassen
Der Grund, warum so kompliziert, es kann durchaus sein das ein Name mehr als 2x vorkommt.
Der errechnete Wert soll in das jeweilige Tabellenblatt aus Spalte B jeweils in eine neue Zeile ausgegeben werden.
Ich habe die Datei, vllt zum besseren Verständnis mit angefügt.
https://www.herber.de/bbs/user/133254.xlsm
LG Gerhard

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

Betreff
Datum
Anwender
Anzeige
AW: Werte berechnen
16.11.2019 17:36:51
Regina
Hallo Gerhard,
die Aufgabenstellung ist soweit klar. Was ich so nicht erkennen kann:
Das Datum ist ja im Format JJJJMMTT angelegt. Zum Vergleichen müsste das in ein Datum umgewandelt werden. Ist dabei gewährleistet, das der Monat und der Tag immer zweistellig, sprich ggf. mit führender 0 übergeben wird?
Nächste Frage: Wäre es ok, wenn die Liste via VBA zunächst nach Spalte A sortiert wird?
VG Regina
AW: Werte berechnen
16.11.2019 18:13:54
Gerhard
Hallo Regina
Vielen Dank, das du mir helfen magst...
Ja das Datum wird immer mit einer voranführenden Null ausgegeben.
Und natürlich darf auch alles, auch das aufbereiten, Sortieren usw in VBA ausgeführt werden...
LG Gerhard
Anzeige
AW: Werte berechnen
16.11.2019 18:49:40
Regina
Hi, dann teste mal diesen Code, bei einigen Stichproben sieht er gut aus.
Public Sub Auswertung()
Dim lng_zeile As Long
Dim lng_letzte_zeile As Long
Dim dat_kleinstes_Datum As Date
Dim dat_groesstes_Datum As Date
Dim str_merkname As String
Dim lng_kleinstes_Kill As Long
Dim lng_groesstes_Kill As Long
Dim obj_quelle As Worksheet
Dim obj_ziel As Worksheet
Dim lng_zeile_FND As Long
Dim lng_zeile_FND2 As Long
Dim lng_zeile_ziel As Long
lng_zeile = 2  ' Startzeile auf Blatt Übersicht
lng_zeile_FND = 2  ' Startzeile für Einfügen, auf 1 setzen, falls keine Überschriften vorhanden  _
sind
lng_zeile_FND2 = 2
Set obj_quelle = Worksheets("Übersicht")
With obj_quelle
lng_letzte_zeile = .Cells(Rows.Count, 1).End(xlUp).Row
.Range("A1:M" & lng_letzte_zeile).Sort Key1:=.Range("A2"), Order1:=xlAscending, Header:= _
xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
str_merkname = .Cells(lng_zeile, 1)
dat_groesstes_Datum = DateSerial(Int(Left(.Cells(lng_zeile, 13), 4)), Mid(.Cells(lng_zeile,  _
13), 5, 2), Right(.Cells(lng_zeile, 13), 2))
dat_kleinstes_Datum = DateSerial(Int(Left(.Cells(lng_zeile, 13), 4)), Mid(.Cells(lng_zeile,  _
13), 5, 2), Right(.Cells(lng_zeile, 13), 2))
lng_groesstes_Kill = .Cells(lng_zeile, 3)
lng_kleinstes_Kill = .Cells(lng_zeile, 3)
Do Until lng_zeile > lng_letzte_zeile
If str_merkname = .Cells(lng_zeile, 1) Then
If dat_groesstes_Datum  DateSerial(Int(Left(.Cells(lng_zeile, 13), 4)), Mid(.Cells( _
lng_zeile, 13), 5, 2), Right(.Cells(lng_zeile, 13), 2)) Then
dat_kleinstes_Datum = DateSerial(Int(Left(.Cells(lng_zeile, 13), 4)), Mid(. _
Cells(lng_zeile, 13), 5, 2), Right(.Cells(lng_zeile, 13), 2))
lng_kleinstes_Kill = .Cells(lng_zeile, 3)
End If
Else
' neuer Name
Set obj_ziel = Worksheets(CStr(.Cells(lng_zeile - 1, 2)))
If .Cells(lng_zeile - 1, 2) = "FND" Then
lng_zeile_ziel = lng_zeile_FND
Else
lng_zeile_ziel = lng_zeile_FND2
End If
With obj_ziel
.Cells(lng_zeile_ziel, 1) = str_merkname
.Cells(lng_zeile_ziel, 2) = lng_groesstes_Kill - lng_kleinstes_Kill
End With
If .Cells(lng_zeile - 1, 2) = "FND" Then
lng_zeile_FND = lng_zeile_FND + 1
Else
lng_zeile_FND2 = lng_zeile_FND2 + 1
End If
str_merkname = .Cells(lng_zeile, 1)
dat_groesstes_Datum = DateSerial(Int(Left(.Cells(lng_zeile, 13), 4)), Mid(.Cells( _
lng_zeile, 13), 5, 2), Right(.Cells(lng_zeile, 13), 2))
dat_kleinstes_Datum = DateSerial(Int(Left(.Cells(lng_zeile, 13), 4)), Mid(.Cells( _
lng_zeile, 13), 5, 2), Right(.Cells(lng_zeile, 13), 2))
lng_groesstes_Kill = .Cells(lng_zeile, 3)
lng_kleinstes_Kill = .Cells(lng_zeile, 3)
End If
lng_zeile = lng_zeile + 1
Loop
End With
End Sub
Gruß Regina
Anzeige
AW: Werte berechnen
16.11.2019 19:04:29
Gerhard
Suuuuuuuuper vielen vielen Dank!!!!!
Das hilft mir immens weiter!!!
aber ich traue es mich gar nicht zu fragen... Ich hoffe das macht jetzt ned nen riesen Umstand...
Gerade kam ne Bitte aus der Gruppe, das Spalte E auch mit ausgwertet werden soll...Gleiche Prozedur wie bei C. Nur die Eintragungen auf den jeweiligen Sheets eine Spalte daneben.
Ich habe mich daran versucht es selbst zu ändern...aber diesen Code blick ich noch ned.
Sorry ginge das noch?
GLG Gerhard
AW: Werte berechnen
16.11.2019 19:19:18
Regina
Hi,
nee, das hält sich vom Aufwand her in Grenzen, folgt ja der gleichen Logik. Teste mal:
Public Sub Auswertung()
Dim lng_zeile As Long
Dim lng_letzte_zeile As Long
Dim dat_kleinstes_Datum As Date
Dim dat_groesstes_Datum As Date
Dim str_merkname As String
Dim lng_kleinstes_Kill As Long
Dim lng_groesstes_Missionen As Long
Dim lng_kleinstes_Missionen As Long
Dim obj_quelle As Worksheet
Dim obj_ziel As Worksheet
Dim lng_zeile_FND As Long
Dim lng_zeile_FND2 As Long
Dim lng_zeile_ziel As Long
lng_zeile = 2  ' Startzeile auf Blatt Übersicht
lng_zeile_FND = 2  ' Startzeile für Einfügen, auf 1 setzen, falls keine Überschriften  _
vorhanden _
sind
lng_zeile_FND2 = 2
Set obj_quelle = Worksheets("Übersicht")
With obj_quelle
lng_letzte_zeile = .Cells(Rows.Count, 1).End(xlUp).Row
.Range("A1:M" & lng_letzte_zeile).Sort Key1:=.Range("A2"), Order1:=xlAscending, Header:= _
xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
str_merkname = .Cells(lng_zeile, 1)
dat_groesstes_Datum = DateSerial(Int(Left(.Cells(lng_zeile, 13), 4)), Mid(.Cells(lng_zeile, _
_
13), 5, 2), Right(.Cells(lng_zeile, 13), 2))
dat_kleinstes_Datum = DateSerial(Int(Left(.Cells(lng_zeile, 13), 4)), Mid(.Cells(lng_zeile, _
_
13), 5, 2), Right(.Cells(lng_zeile, 13), 2))
lng_groesstes_Kill = .Cells(lng_zeile, 3)
lng_kleinstes_Kill = .Cells(lng_zeile, 3)
lng_groesstes_Missionen = .Cells(lng_zeile, 5)
lng_kleinstes_Missionen = .Cells(lng_zeile, 5)
Do Until lng_zeile > lng_letzte_zeile
If str_merkname = .Cells(lng_zeile, 1) Then
If dat_groesstes_Datum  DateSerial(Int(Left(.Cells(lng_zeile, 13), 4)), Mid(. _
Cells( _
lng_zeile, 13), 5, 2), Right(.Cells(lng_zeile, 13), 2)) Then
dat_kleinstes_Datum = DateSerial(Int(Left(.Cells(lng_zeile, 13), 4)), Mid(. _
Cells(lng_zeile, 13), 5, 2), Right(.Cells(lng_zeile, 13) _
, 2))
lng_kleinstes_Kill = .Cells(lng_zeile, 3)
lng_kleinstes_Missionen = .Cells(lng_zeile, 5)
End If
Else
' neuer Name
Set obj_ziel = Worksheets(CStr(.Cells(lng_zeile - 1, 2)))
If .Cells(lng_zeile - 1, 2) = "FND" Then
lng_zeile_ziel = lng_zeile_FND
Else
lng_zeile_ziel = lng_zeile_FND2
End If
With obj_ziel
.Cells(lng_zeile_ziel, 1) = str_merkname
.Cells(lng_zeile_ziel, 2) = lng_groesstes_Kill - lng_kleinstes_Kill
.Cells(lng_zeile_ziel, 3) = lng_groesstes_Missionen - lng_kleinstes_Missionen
End With
If .Cells(lng_zeile - 1, 2) = "FND" Then
lng_zeile_FND = lng_zeile_FND + 1
Else
lng_zeile_FND2 = lng_zeile_FND2 + 1
End If
str_merkname = .Cells(lng_zeile, 1)
dat_groesstes_Datum = DateSerial(Int(Left(.Cells(lng_zeile, 13), 4)), Mid(.Cells(  _
_
lng_zeile, 13), 5, 2), Right(.Cells(lng_zeile, 13), 2))
dat_kleinstes_Datum = DateSerial(Int(Left(.Cells(lng_zeile, 13), 4)), Mid(.Cells(  _
_
lng_zeile, 13), 5, 2), Right(.Cells(lng_zeile, 13), 2))
lng_groesstes_Kill = .Cells(lng_zeile, 3)
lng_kleinstes_Kill = .Cells(lng_zeile, 3)
lng_groesstes_Missionen = .Cells(lng_zeile, 5)
lng_kleinstes_Missionen = .Cells(lng_zeile, 5)
End If
lng_zeile = lng_zeile + 1
Loop
End With
End Sub

Gruß
Regina
Anzeige
AW: Werte berechnen
16.11.2019 20:06:03
Gerhard
Hallo Regina!
Vielen lieben Dank für deine Mühen.
Das was ich weiterhin noch brauche, werde ich jetzt mal sewlbst versuchen, iwie muss ichs ja lernen ;)
Wenn ich gar ned weiter komme, darf ich dich dann hier nochmals kontaktieren?
LG und noch n schönes Restwochenende!!!
AW: Werte berechnen
16.11.2019 20:08:27
Regina
Hi,
klar, melde Dich gerne.
Gruß und schönes Rest-Wochenende!
Regina
AW: Werte berechnen @Regina
17.11.2019 12:19:08
Gerhard
Guten Morgen Regina
Habe mir die halbe Nacht umme Ohren geschlagen um den Code zu verstehen und dementsprechend umzubauen, damit ich das erreiche , was ich letztendlich möchte... Kläglich gescheitert :)
(zumindest habe ich es kapiert, wie ich, wenn nötig weitere Spalten aus der Übersicht auswerten will, diese sichtbar bekomme)
Habe dir nochmals die Mappe mitangefügt und auf dem letzten Tabellenblatt n paar Kommentare mit angefügt. Evtl. hast ja nochmals Lust (natürlich würde ich mich dafür auf erkenntlich zeigen!!!!)
LG Gerhard
https://www.herber.de/bbs/user/133266.xlsm
Anzeige
also noch offen markiert owT
17.11.2019 12:58:09
Gerhard
---
AW: Werte berechnen @Regina
17.11.2019 13:04:17
Regina
Hallo Gerhard,
das heißt mein erster Code ist für die Tonne? Hmmmmmmm....
Ok, ich schau mir das Gnaze in den nächsten Tagen mal na, heute wird das nichts mehr.
Eine Rückfrage noch: In Deiner Anmerkung steht, dass zum Saisonstart die Namen aus Auswertung ohne Dopplung in Zeile 6-30 übernommen werden sollen. Müssten die Namen nicht aus Übersicht übernommen werden?
Gruß
Regina
AW: Werte berechnen @Regina
17.11.2019 13:14:17
Regina
Hi,
sorry, so ganz durchschaue ich das noch nicht, wo kommen denn die Tage in den Überschriften her (von wann bis wann geht eine Woche)?
Soll weiterhin die Differenz der Werte zwischen dem kleinsten und dem größten Datum gebildet werden? Wo genau sollen die Kills und wo doe Missions eingetragen werden?
Am Besten machst Du mal eine Mappe fertig (basierend auf der die Du schon geschickt hast und trägst einige Zielwerte mal so ein, wie Du es gerne hättest.
Gruß Regina
Anzeige
AW: Werte berechnen @Regina
17.11.2019 18:01:39
Gerhard
Hi Regina!
Nein nicht für die Tonne! Ich hab auf jeden Fall durch den Code wieder was dazu gelernt!
Hab dir nochmal die Mappe überarbeitet hinzugefügt!
Schönen Sonntag noch
LG Gerhard
https://www.herber.de/bbs/user/133276.xlsm
AW: Werte berechnen @Regina
17.11.2019 18:03:12
Gerhard
Müssten die Namen nicht aus Übersicht übernommen werden?
Stimmt du hast Recht, mein Fehler, sry
LG
AW: Werte berechnen @Regina
18.11.2019 07:48:41
Regina
ok, dann bastel ich mal. Ich melde mich in den nächsten Tagen, wenn ich ein Zwischenregebnis habe.
Schick mir mal Deine Mailadresse, weiß nicht, wie lange ich an diesen Beitrag hier rankomme.
Gruß
Regina
Anzeige
AW: Werte berechnen @Regina
18.11.2019 16:26:01
Gerhard
Super, Vielen lieben Dank!!!!
Meine Mail Add lautet tiguan24@gmx.de
LG

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige