Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1176to1180
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

spezielles Makro benötigt

spezielles Makro benötigt
Isolde
Hallo Forumsmitglieder,
ich habe hier ein Anliegen spezieller Art, wofür ich leider keinen passenden Befehle in Excel oder im Internet finden konnte.
Da sich die Inhalte des Tabellenblatts erweitern werden, wird ein Makro benötigt.
Also in Spalte A sind den Teilenummern von Spalte B jeweils eine laufende Nummer zugeordnet bzw. eingetragen.
Manche Teile wurden gesplittet (linke und rechte Hälfte). Diese Teilenummern erkennt man daran, dass sie jeweils die gleiche laufende Nummer haben (z.B. zwei mal 481).
Des Weiteren befindet sich in Spalte AH nur zu diesen Teilen immer die Kennzeichnung „d1“ und „d2“, welche jeweils zu der gleichen laufenden Nummer in unterschiedlichen Zeilen zugeordnet sind.
Es gibt also zu jeder zwei mal vorkommenden laufenden Nummer einmal die Zuordung d1 und einmal die Zuordung d2 (innerhalb der Spalte AH).
Excel soll nun Stück für Stück jeweils die doppelten laufenden Nummern in Spalte A finden.
Zu jedem Nummernpaar muss sich nun zunächst in Spalte AH auf die Zeile bezogen werden, welche „d1“ enthält oder besser einfach nur eine 1, wegen unterschiedlicher Eintragungen (manche Mitarbeiter haben d1 mit Freizeichen manche ohne Freizeichen dazwischen eingetragen).
Hat Excel nun die richtige Zeile gefunden, soll es in der Spalte AJ, (Zelle liegt auf gleicher Zeile wie „d1“) die bereits alte eingetragene Formel löschen und die Summe aus der Zahl in der Zelle rechts neben d1 (Spalte AI) und der zugehörigen Zahl von d2 ( Zelle rechts von d2 also in Spalte AI) bilden.
Ich hoffe ihr versteht was ich meine, sonst versuche ich es noch mal anders zu beschreiben oder eine Beispieldatei hoch zu laden.
Vielen Dank für die Hilfe,
Liebe Grüße

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

Betreff
Benutzer
Anzeige
Bsp.-Datei wäre schon hilfreich o.w.T.
29.09.2010 17:22:44
welga
AW: Bsp.-Datei wäre schon hilfreich o.w.T.
29.09.2010 21:52:19
Isolde
Hallo,
Zum besserem Verständnis meines Anliegens:
Für jedes „d1“ in Spalte AH muss in der Spalte AJ die Berechnung der Summe der Einzelteile korrigiert werden.
Die Zahlen in Spalte AJ ergeben sich durch eine hinterlegte Formel, die in der Beispieldatei nicht abgebildet ist.
Jedem d1 ist in der Spalte AH auch ein d2 zugeordnet. Welche Paare zusammengehören, erkennt man an der gleichen laufenden Nummer, welche in diesem Fall für jedes Paar doppelt vorhanden ist.
Es soll nun in der Spalte AJ bei jedem d1 die Formel der Zelle gelöscht werden und es muss eine neue hinein geschrieben werden:
Also, wenn laufende Nummer doppelt und dieser in Spalte AJ ein d1 zugeordnet ist, dann suchen zugehöriges „d1“ und „d2“ (haben jeweils gleiche laufende Nummer) und anschließend bei d1 (in Beispieltabelle z.B. Zeile 52, lfd.Nr. 54) in Spalte AJ:52 die Formel löschen und Summe bilden von dem WERT für d1 in Spalte AI (hier 39 Stück) und dem zugehörigen Wert für d2 in Spalte AI (hier z.B. steht dieser in Zeile 690 also 41 Stück).
Zum besseren Verständnis sie hoch geladene Datei!
In Zelle AJ:52 müsste dann also 80 stehen.
Für die restlichen d1 ist der Vorgang analog fort zu setzten.
Sonstige eventuell doppelt vergebenen laufenden Nummern zu denen kein d1/d2 zugeordnet ist, sind zu ignorieren!

ich habe die Beispieldatei hier hochgeladen:

https://www.herber.de/bbs/user/71701.xls
Ich hoffe das diese Beschreibung nun besser ist.
Vielen dank für eure Hilfe!
Anzeige
AW: Bsp.-Datei wäre schon hilfreich o.w.T.
30.09.2010 06:51:32
BoskoBiati
Hallo,
würde sagen, das ist jenseits von gut und bösel!
Wie soll Excel mit sowas umgehen:
Arbeitsblatt mit dem Namen 'Tabelle1'
 AIAJ
90je 1212
91je 2142
92je 1326
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Bei einer in sich unlogischen Tabelle kann ich keine Formel einsetzen, zumal es sich anscheinend um Handeingaben handelt, da kann ich keine Formel einsetzen.
Es soll nun in der Spalte AJ bei jedem d1 die Formel der Zelle gelöscht werden und es muss eine neue hinein geschrieben werden:
Wo gibt es Formeln?
Gruß
Bosko
Anzeige
AW: Bsp.-Datei wäre schon hilfreich o.w.T.
30.09.2010 09:44:58
Klaus
Hallo Isolde,
sorry aber dein Tabellenaufbau ist - im Klartext - unter aller Sau.
Es gibt einen Unterschied zwischen "d1" und "d 1", nicht einfach irgendwo Leerzeichen reinschreiben. Zellen, in denen Buchstaben vorkommen (zB.: "je"), enthalten für Excel keine Zahlen mehr sonden Text. Und mit Text lässt sich nicht rechnen!
Ausserdem ist es tödlich, unbenutzte Bereiche einfach mal als Text zu formatieren. Kommt keine Formel mit klar.
Schlussendlich: Verzichte auf verbundene Zellen!
Lass mal dieses Makro laufen. Es repariert zunächst den Tabellenaufbau in eine vernünftige Form und nimmt dann die Ersetzungen vor. Ich gehe davon aus, dass die Spalten AK und AL auch in deiner Originaldatei leer sind. Die Überschriften musst du danach nochmal per Hand hübsch machen.
Sub Makro1()
Dim lRow As Long
Dim rMyb As Range
With ActiveSheet
'sinnfreierweise als TEXT formatierte Spalten umformatieren, um Formeln zuzulassen
.Columns("AK:AL").NumberFormat = "General"
'unnötige Leerzeichen rauswerfen - paar Mal steht da "d 1", dann woanders "d1"
'auch alle händischen "je" Einträge rauswerfen, damit Excel wieder Zahlen zum rechnen hat
With .Range("AH1:AJ1").EntireColumn
.Replace What:="je", Replacement:=""
.Replace What:=" ", Replacement:=""
End With
'letzte Zeile ermitteln
lRow = .Range("A65536").End(xlUp).Row
'Zahl-Als-Text Werte in Zahlen umwanden (durch multiplikation mit 1)
.Range("AK1").Value = "1"
.Range("AK1").Copy
.Range("AI4:AJ" & lRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply
.Range("AK1").ClearContents
'vorhandene D2-er zu D1-ern per Formel ermitteln
.Range("AK4:AK" & lRow).FormulaR1C1 = "=RC[-3]&RC[-36]"
.Range("AL4:AL" & lRow).FormulaR1C1 = "=IF(RC[-4]=""d1"",SUMIF(C[-1],""d2""&RC[-37],C[- _
2]))"
'D2-Ergebnisse zu D1-Mengen addieren (in AJ)
For Each rMyb In .Range("AL4:AL" & lRow)
If Not rMyb = False Then
rMyb.Offset(0, -2).Value = rMyb.Offset(0, -2).Value + rMyb.Value
End If
Next rMyb
'Hilfsspalten löschen
.Columns("AK:AL").ClearContents
End With
End Sub
Rückmeldung erbeten!
Grüße,
Klaus M.vdT.
Anzeige
AW: Bsp.-Datei wäre schon hilfreich o.w.T.
30.09.2010 16:38:15
Isolde
Vielen Dank erst mal, Dein Makro funst wunderbar!!!
Trotzdem muss ich noch ein paar verteidigende Worte zu dem schlechten Tabellenaufbau geben.
Das man keinen Text und Zahl in einer Zelle eingeben darf weis ich, diese Eintragungen wurden von diversen Mitarbeitern vorgenommen.
In der Spalte AJ standen Formeln welche sich unter anderem auf Spalte AI bezogen. In diesen Formeln hatte ich über die WECHSELN-Funktion bereits das „je“ und „x“ bereinigt, so dass in AJ jeweils die richtigen Ergebnisse berechnet werden konnten (außer in den Zellen für d1 musste die Formel geändert werden).
Wegen den sensiblen Daten musste ich aber die Formeln rausnehmen, weil sonst weitere Spalten mit abgebildet werden müssten.
Da speziell bei den Feldern mit „d1“ und „d2“ kein „je“ in Spalte AI vorkommt (siehe Spalte AH über Autofilter „Nichtleere“ und vgl. Spalte AI) ist die Sache mit dem „je“ für dieses spezielle Makro nicht relevant gewesen, sonst hätte ich das auch erwähnt.
(das man deswegen trotzdem erst mal einen „Schreck“ bekommt, hätte ich mir denken müssen – sorry)

Welche Formel automatisiert werden soll hatte ich sowohl im Text als auch in der Beispieldatei hinreichend genau beschrieben, wie es auch Klaus richtig berechnet hat.
Ich möchte mich an dieser Stelle trotzdem für eventuelle Unannehmlichkeiten oder „Fragezeichen“ entschuldigen. Sicher hätte ich das im Vorfeld etwas klarer erklären können.
An dieser noch mal Vielen Dank!
Liebe Grüße!
Anzeige
Danke für die Rückmeldung! o.w.T.
01.10.2010 08:20:36
Klaus
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige