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

Adressbereiche in Formeln "zerstört"

Adressbereiche in Formeln "zerstört"
10.02.2021 16:27:31
Vanessa
Hallo zusammen,
ich hoffe, ihr könnt und mögt mir bei meinem Problem weiterhelfen.
Normalerweise komme ich ganz gut mit VBA zurecht - ich habe im November 2018 damit angefangen (Google, vieles aus diesem Forum & Makrorekorder).
Soweit zu mir. Nun zur Problematik, die mir graue Haare bereitet ..
Ich habe eine Budgetplantabelle erstellt, welche vier vierschiedene Imports realisiert.
Dies läuft im VBA so: Mappe im Hintergrund öffnen, die Daten aus dem Quellarbeitsblatt kopieren und in das Zielarbeitsblatt einfügen. Dies funktioniert auch reibungslos.
Zusätzlich durchsuche ich in einigen der Imports die erste Zeile nach Spaltenüberschriften, speichere die Spaltennummer mit dem gefundenen Wert in einer Variable ab und schneide und verschiebe diese dann so:

Sub key_ind_search(ByRef keyname As String)
Dim searchrrng As Range 'Bereich, welcher durchsucht wird
Dim iCol As Integer     'Spaltenzahl (Rückgabewert aus Suche)
'Durchsuche die erste Zeile/die Überschriften nach dem Wert "keyname"
Range("A1").EntireRow.Select
Set searchrng = Selection
iCol = Application.WorksheetFunction.Match(keyname, searchrng, False)
'Wähle die Spalte mit der gesuchten Überschrift aus..
Cells(1, iCol).EntireColumn.Select
'..schneide sie aus und füge sie vorn wieder ein
Selection.Cut
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
End Sub


Dies mache ich, um SVERWEISe zu realisieren und den Key Indicator nach vorn zu setzen. So weit, so gut.
Die Daten verarbeite ich zum Teil auch mit der SUMMEWENN(S)-Funktion(en) weiter und hier passiert es: Der Adressbereich wird, ich vermute durch das Versetzen, zerstört.
So wird beispielsweise aus dieser Formel ...
=WENNFEHLER(SUMMEWENNS('#Import PPMS'!$BD$2:$BD$3000;'#Import PPMS'!$A$2:$A$3000;Übersicht!$F$3; '#Import PPMS'!$AA$2:$AA$3000;"Abteilung A");"Keine Daten")
... diese Formel:
=WENNFEHLER(SUMMEWENNS('#Import PPMS'!$BD$2:$BD$3000;'#Import PPMS'!$B$2:$B$3000;Übersicht!$F$3; '#Import PPMS'!$AA$2:$AA$3000;"Abteilung A");"Keine Daten")
Dies passiert bei mehreren Formeln. Bei den SVERWEISen konnte ich dies mittels VBA abfangen (WsF.VLookup), bei SUMMEWENN(S) scheint es schwieriger/steige ich nicht durch die Syntax durch.
Ich habe es alternativ mit .Formula und Evaluate versucht und bin gescheitert. Eine weitere Idee ist es, dass ich die automatische Formelberechnung vor dem Import/der Spaltenumsetzung kurzzeitig deaktiviere und erst danach wieder aktiviere.
Wäre jemand so lieb, mir für die Idee die Befehle an die Hand zu geben? Der Makrorekorder hilft bei Einstellungen ja nicht. Und: Hat jemand eine alternative Idee? Übersehe ich etwas?
Ich bin für JEDE Antwort absolut dankbar. Bleibt gesund!
Liebe Grüße,
Vanessa
P.S.: Ich hätte gerne eine Beispielmappe angehangen, jedoch geht das aufgrund der Vielzahl sensibler Daten nicht.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Adressbereiche in Formeln "zerstört"
10.02.2021 17:13:57
ralf_b
Hallo Vanessa,
du schneidest aus und fügst woanders wieder ein. Excel merkt das und denkt sich "Mensch hier muß ich aufpassen das mir die Werte verloren gehen." Versuch doch mal mittels Copy und Paste. Statt im Cut und Paste.
Da du viel im Forum gelernt hast ,ist siche rauch dabei das select und activate keine guten Ratgeber sind.
z.b. ganz ohne selection

iCol = Application.WorksheetFunction.Match(keyname, Rows(1), False)
gruß
rb
AW: Adressbereiche in Formeln "zerstört"
11.02.2021 08:04:38
Vanessa
Hallo Ralf,
vielen Dank für deinen Ansatz - so funktioniert es nun tatsächlich:
Dim iCol As Integer 'Spaltenzahl (Rückgabewert aus Suche)
Dim lCol As Long 'Letzte benutzte Spalte (als Hilfswert)
Dim hvar As Long 'Hilfsvariable zur Addition
'Ermittle die letzte befüllte Spalte im Blatt
lCol = Cells(1, Columns.Count).End(xlToLeft).Column
hvar = lCol + 1
'Kopiere den Inhalt der 1. Spalte nach hinten
Columns(1).Copy
Columns(hvar).Insert
'Durchsuche die erste Zeile/die Überschriften nach dem Wert "keyname"
iCol = Application.WorksheetFunction.Match(keyname, Rows(1), False)
'Kopiere die gefundenen Daten in die 1. Spalte ..
Columns(1).ClearContents
Columns(iCol).Copy
Columns(1).PasteSpecial Paste:=xlValues
'.. und setze in die ursprüngliche Spalte des Suchwertes die Daten aus Spalte A ein.
Columns(iCol).ClearContents
Columns(hvar).Copy
Columns(iCol).PasteSpecial Paste:=xlValues

In den anderen Tabellenblättern habe ich das Problem nun allerdings, sodass das Problem nur "verschoben" scheint. Aber das muss ich nun erstmal analysieren. :)
Ich melde mich, ob/wie sich alles lösen ließ! Bis dahin schon mal: Danke!!
LG,
Vanessa
Anzeige
AW: Adressbereiche in Formeln "zerstört"
11.02.2021 08:05:50
Vanessa
Hallo Ralf,
vielen Dank für deinen Ansatz - so funktioniert es nun tatsächlich:
Dim iCol As Integer 'Spaltenzahl (Rückgabewert aus Suche)
Dim lCol As Long 'Letzte benutzte Spalte (als Hilfswert)
Dim hvar As Long 'Hilfsvariable zur Addition
'Ermittle die letzte befüllte Spalte im Blatt
lCol = Cells(1, Columns.Count).End(xlToLeft).Column
hvar = lCol + 1
'Kopiere den Inhalt der 1. Spalte nach hinten
Columns(1).Copy
Columns(hvar).Insert
'Durchsuche die erste Zeile/die Überschriften nach dem Wert "keyname"
iCol = Application.WorksheetFunction.Match(keyname, Rows(1), False)
'Kopiere die gefundenen Daten in die 1. Spalte ..
Columns(1).ClearContents
Columns(iCol).Copy
Columns(1).PasteSpecial Paste:=xlValues
'.. und setze in die ursprüngliche Spalte des Suchwertes die Daten aus Spalte A ein.
Columns(iCol).ClearContents
Columns(hvar).Copy
Columns(iCol).PasteSpecial Paste:=xlValues

In den anderen Tabellenblättern habe ich das Problem nun allerdings, sodass das Problem nur "verschoben" scheint. Aber das muss ich nun erstmal analysieren. :)
Ich melde mich, ob/wie sich alles lösen ließ! Bis dahin schon mal: Danke!!
LG,
Vanessa
Anzeige
AW: Adressbereiche in Formeln "zerstört"
11.02.2021 10:19:49
ralf_b
Hallo Vanessa,
Was passiert wenn "Match" den Spaltennamen nicht findet? Der Fehlerwert wird in eine _ Integervariable gesteckt. Wobei match ein double zurückgeben will. Der Fehlerwert ist aber ein Text. Der Text wird direkt als Adresse verwendet. Du erkennst sicher worauf ich hinaus will.

'Durchsuche die erste Zeile/die Überschriften nach dem Wert "keyname"
iCol = Application.WorksheetFunction.Match(keyname, Rows(1), False)

Entweder die Copy-Paste-Operation löst die Folgeprobleme aus oder das Weglassen der _ Insertoperation.

Columns(iCol).Copy
Columns(1).PasteSpecial Paste:=xlValues
könnte auch so umgesetzt werden. Columns(1).value = Columns(iCol).value

gruß
rb
Anzeige
AW: Adressbereiche in Formeln "zerstört"
11.02.2021 10:27:27
Vanessa
Hallo Ralf,
vielen lieben Dank für die Optimierungen - ich baue das gleich ein.
Das der Text nicht gefunden wird, ist eigentlich auszuschließen, da ich es dem User als Prämisse mitgebe und der Text durch ein externes Programm vergeben wird. Es ist aber vielleicht dennoch nicht schlecht, das abzufangen - für den Fall der Fälle. :)
Der Fehler lag bei mir. Ich hatte die Formeln noch nicht wieder sauber eingefügt, nachdem ich den Code umgesetzt habe. Jetzt läuft alles!
LG
gerne, danke für die rückmeldung owt
11.02.2021 14:22:50
ralf_b
AW: Adressbereiche in Formeln "zerstört"
10.02.2021 18:57:43
Oberschlumpf
Hi Vanessa,
für den Fall, dass Ralf nicht helfen konnte (du hast ja noch nicht geantwortet), könntest du dann vielleicht per Upload eine Bsp-Datei mit Bsp-Daten zeigen?
Und wenn es erforderlich ist, dass du eine ganz neue Datei erstellst, die nur wenige Bsp-Datenzeilen enthalten, mit denen es aber einfacher zu erkennen ist, wie dein Problem gelöst werden könnte.
Dein Code + Formeln sollte natürlich auch so in der Bsp-Datei enthalten sein, dass eben der Fehler wie beshcrieben ausgelöst wird.
Denn so wie bis jetzt ist es für Antworter ja doch eher ein "Ratespiel".
Aber wer weiß, vielleicht hatte Ralf ja schon "richtig geraten" - es fehlt dazu nur dein Feedback.
Ciao
Thorsten
Anzeige
AW: Adressbereiche in Formeln "zerstört"
11.02.2021 10:28:43
Vanessa
Hallo Oberschlumpf,
Ralfs Denkanstoß hat mir geholfen, das Problem zu lösen. :)
Die Datei ist inzwischen sehr umfangreich, daher habe ich gehofft, dass es ohne funktionieren wird - und wurde glücklicherweise nicht enttäuscht.
LG,
Vanessa

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige