Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
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
Spalte in Tabelle finden und Subtrahieren
13.09.2023 18:31:08
Nils
Hallo,
Ich habe da ein Problem und bekomme es leider nicht hin.
Und zwar möchte ich mit einem Klick auf einen Button, dass alle Werte in der Tabelle Spalte „Werte“ mit dem dazugehörigen Suchkriterium aus der Spalte „Produkte“ im Tabellenblatt 2 (Spalte: Werte) gesucht werden und subtrahiert werden.
Ich hoffe, ich habe es halbwegs verständlich formuliert. Zum besseren Verständnis habe ich noch eine Beispieldatei angehängt.

https://www.herber.de/bbs/user/162829.xlsx

Ich wäre sehr dankbar, wenn mir jemand bei dem Problem helfen kann.
Im Voraus schonmal vielen Dank!

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: so nicht eindeutig ...
13.09.2023 19:05:49
neopa C
Hallo Nils,

... unklar ist mir zunächst, welcher Wert von welchem subtrahiert werden soll. Und wenn dies direkt in der [Werte]-Spalte der Zieltabelle erfolgen soll, geht das nur mit VBA. Dann ist aber dann so nicht mehr nachvollziehbar, wie es zu den Ergebniswerten gekommen ist. Deshalb würde ich eine neue Spalte z.B. [Werte_neu] in der Spalte anlegen und da in K10 folgende Formel: =-WENNFEHLER(SVERWEIS([@Produkte];Tabelle2;5;0);0)+[@Werte] (darin evtl. die beiden Vorzeichen vertauschen) einschreiben.

Gruß Werner
.. , - ...
AW: so nicht eindeutig ...
13.09.2023 22:11:35
Nils
Hallo Werner,
es soll im Tabellenblatt „Ziel“ der Wert vom Tabellenblatt „Start“ abgezogen werden bzw. durch das Ergebnis ersetzt werden. Dar ich das ganze durch eine klick auf einen Button durchführen möchte, kommt da eine normale Formel nicht infrage. Nachvollziehbar muss es im Nachgang nicht sein. Also es soll defensiv über Makro laufen.
Ich hoffe, es ist nun ein wenig verständlicher.
Gruß Nils
Anzeige
bedenke daran, ...
14.09.2023 09:48:59
Yal
... dass wenn man aus versehen oder durch Ablenkung zweimal auf den Knopf gedrückt wird, diese Daten zweimal substrahiert werden.
So etwas von vorne rein auszuschliessen heisst "Security by Design".

Du könntest sagen, "wird nicht vorkommen" oder "das habe ich im Griff", ich sag dazu "Du wirst dich an meinen Wörte erinnern." ;-)

VG
Yal
AW: genauso sah und sehe ich es owT
14.09.2023 09:51:06
neopa C
Gruß Werner
.. , - ...
AW: bedenke daran, ...
14.09.2023 10:19:09
Nils
Ein versehentlicher Klick kann ja durchaus mit einer kleinen Abfrage durch eine MsgBox verhindert werden. Dementsprechend sehe ich dahingehend kein Problem. Dennoch Danke für deine Bedenken, auch wenn es mir keineswegs bei meinem beschriebenen Problem hilf.
Gruß Nils.
Anzeige
AW: Spalte in Tabelle finden und Subtrahieren
13.09.2023 20:36:57
Yal
Hallo Nils,

da bin ich auch bei Werner: nicht klar.
Wenn es um eine Substraktion geht, gibt es 3 (drei) Teile: A-B=C
"Start" und "Ziel" bedeutet in dem Fall "nach der Substraktion, ersetze B durch C" oder vielleicht war's "ersetze A durch C"?

Da deine 2 Quellen in Tabelle vorliegen, bietet sich Power Query für die Bearbeitung. Entweder joinen, dann Substrahieren, oder ein der Beide im Vorzeichen umkehren, beide zueinander anfügen und summiert gruppieren.

Siehe Video 3 in https://excelhero.de/power-query/power-query-ganz-einfach-erklaert an.
Wobei wenn Du noch nie von PQ gehört hast, schaue alle Videos an.

VG
Yal
Anzeige
AW: Spalte in Tabelle finden und Subtrahieren
14.09.2023 10:11:13
Nils
Hallo Ulf,
vielen Dank erstmal für deinen Vorschlag. Das funktioniert auch so weit ganz gut. Allerdings muss ich das Ganze in eine sehr große Arbeitsmappe übertragen, wo pro Tabellenblatt sich teilweise ziemlich viele Tabellen befinden. Also müsste ich das bessere Definieren können sprich Tabellenname, Range, Spalte usw. Und das bekomme ich mit deinem Makro leider nicht gebacken. Eventuell hast du dafür ja noch eine Lösung, würde mich freuen.
Gruß Nils
Anzeige
AW: Spalte in Tabelle finden und Subtrahieren
14.09.2023 10:46:59
Yal
hallo zusammen,

wenn ich das richtig sehe, gibt es die zusätzliche Schwierigkeit, dass einige Produkt in Start nicht in Ziel sind.

Hier eine Lösung per Power Query, siehe Blatt Ergebnis. Rechtsklick auf die Tabelle dort und "aktualisieren".
https://www.herber.de/bbs/user/162838.xlsx

wenn es unbedingt VBA sein muss, würde ich mit Dictionary arbeiten. So lässt sich auf einer eindeutige Schlüssel am besten summieren/substrahieren:
(Ausgabe hier auch separat)

Public Sub schleife()

Dim Dic
Dim LR As ListRow
Dim K

Set Dic = CreateObject("Scripting.Dictionary")
'Start-Wert substrahierend sammlen
For Each LR In ThisWorkbook.Worksheets("Start").ListObjects("Tabelle2").ListRows
Dic(LR.Range(1).Text) = Dic(LR.Range(1).Text) - LR.Range(5)
Next
'Ziel-Wert addierend sammlen
For Each LR In ThisWorkbook.Worksheets("Ziel").ListObjects("Tabelle1").ListRows
Dic(LR.Range(1).Text) = Dic(LR.Range(1).Text) + LR.Range(8)
Next
'Ausgeben (in Spalten P, Q)
For Each K In Dic.keys
With ThisWorkbook.Worksheets("Ziel").Cells(Rows.Count, "P").End(xlUp)
.Offset(1, 0) = K
.Offset(1, 1) = Dic(K)
End With
Next
Set Dic = Nothing
End Sub


VG
Yal
Anzeige
AW: Spalte in Tabelle finden und Subtrahieren
14.09.2023 11:02:09
Ulf
Hi Nils,
Ich erstelle auf dem ersten Blatt eine Konfig-Abteilung, so daß das Makro in seperater Datei läuft mit
Workbook
Worksheet
Tabellenname Quelle
Tabellenname Ziel
Identifikationsspalte Quelle
Identifikationsspalte Ziel
WerteSpalte Quelle
WerteSpalte Ziel
ausreichend ?
Gruß
Ulf

AW: Spalte in Tabelle finden und Subtrahieren
14.09.2023 14:28:14
Nils
Hallo Ulf,
Ja sowas bräuchte ich, kannst du mir das Makro so anpassen? Dan müsste ich mir die einzelnen Stellen nur an mein Dokument anpassen.
Gruß Nils
AW: Spalte in Tabelle finden und Subtrahieren
15.09.2023 00:57:11
Ulf
Hi,
sollte selbsterklärend sein, ggf nachfragen
https://www.herber.de/bbs/user/162864.xlsm
hth
Ulf
Anzeige
AW: Spalte in Tabelle finden und Subtrahieren
15.09.2023 14:40:14
Nils
Hey Ulf,
es tut mir leid. Ich glaube, ich habe deine vorherige Nachricht etwas falsch verstanden. Das Ergebnis ist zwar super, dass ich das dort nur so eintragen muss, das funktioniert auch alles hervorragend. Aber eigentlich bräuchte ich es nur, sodass ich im Makro, also im Code diese Werte eingebe bzw. oder dort anpassen kann. Weil wie gesagt, ich möchte, das Ganze in ein anderes Dokument übertragen, wo es mehrere solcher Tabellen gibt. Das würde ja dann eben auch bedeuten, dass ich viele von diesen Eingabeblättern benötige. Deshalb wäre es für mich einfacher, wenn ich diese Konfigurationen bzw. Werte einfach nur im Code abändern müsste (Blatt, Tabelle, Identifikation, Werte). So kann ich ihn dann einfach kopieren und eventuell an mehreren Stellen nutzen.
Wäre super, wenn sich das noch irgendwie lösen lässt. Ansonsten danke ich dir aber schonmal sehr für deine Unterstützung!
Grüße Nils.
Anzeige
AW: Spalte in Tabelle finden und Subtrahieren
15.09.2023 20:18:06
Ulf
Hi Nils,
ich verstehe gar nicht worauf du hinaus willst. Mit dieser Datei kannst du jede beliebige andere oder 2 miteinander abgleichen. Wo ist der Vorteil funktionierenden Code identisch mehrfach zu verteilen, um ihn fehleranfälliger werden zu lassen ? Führ das Makro da aus, wo es nötig ist und verteil die Datei, benenn sie anders usw.
Der Part Einlesen


Public Function KonfigLesen()
On Local Error GoTo KonfigLesenERR
Dim bOK As Boolean
strDateiQuelle = "QUELLDATEI.xlsx" '.Cells(1, 1).Value
strDateiZiel = "ZIELDATEI.xlsx" '.Cells(1, 2).Value 'kann auch die QUELLDATEI sein vice versa
strBlattQuelle = "NEU" '.Cells(2, 1).Value
strBlattZiel = "ALT" '.Cells(2, 2).Value
strTabelleQuelle = "QUELLTABELLE" '.Cells(3, 1).Value
strTabelleZiel = "ZIELTABELLE" '.Cells(3, 2).Value
lngIdentifikationQuelle = 1 '.Cells(4, 1).Value
lngIdentifikationZiel = 1 '.Cells(4, 2).Value
lngWerteQuelle = 5 '.Cells(5, 1).Value
lngWerteZiel = 8 '.Cells(5, 2).Value
Set wbQuelle = Workbooks(strDateiQuelle)
Set wbZiel = Workbooks(strDateiZiel)
Set wsQuelle = wbQuelle.Worksheets(strBlattQuelle)
Set wsZiel = wbZiel.Worksheets(strBlattZiel)
Set lObjQuelle = wsQuelle.ListObjects(strTabelleQuelle)
Set lObjZiel = wsZiel.ListObjects(strTabelleZiel)
bOK = True
KonfigLesenOUT:
KonfigLesen = bOK
Exit Function
KonfigLesenERR:
bInProgress = False
bOK = False
Resume KonfigLesenOUT
End Function

ist doch seeeehr einfach zu ändern.
hth
Ulf
Anzeige
AW: Spalte in Tabelle finden und Subtrahieren
15.09.2023 23:39:29
Nils
Hay Ulf,
Danke! Ich habe es nun so weit eingebaut und es hat auch zunächst super funktioniert. Allerdings ist mir dann noch ein Fehler aufgefallen. Denn es funktioniert nur, wenn nach der Zielspalte, also die Spalte wo subtrahiert wird, keine weiteren Tabellenspalten mehr kommen. Das Makro schreibt ganz egal welche Spalte in der Konfiguration angelegt ist das Ergebnis immer in die allerletzte Spalte der Tabelle, das ist bisher nicht aufgefallen, weil es keine weiteren Spalten in im Testdokument gab. Ich habe einiges probiert, aber bekomme es einfach nicht gelöst wie ich es hinbekomme, dass er das Ergebnis wieder in dieselbe Spalte schreibt.. Weißt du, woran es liegt?
Gruß Nils
Anzeige
AW: Spalte in Tabelle finden und Subtrahieren
16.09.2023 02:37:40
Ulf
Hi Nils
Colums.Count war der Übeltäter...
https://www.herber.de/bbs/user/162897.xlsm
sollte funktionieren, habe ein Blatt erstellt und mehrfach getestet,
auch mit Verschieben der Spaltennamen usw.
Gruß
Ulf

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige