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

Formel als VBA FUnktion

Formel als VBA FUnktion
11.01.2023 14:20:55
Maxi
Hallo zusammen,
wir nehmen Daten über eine App auf diese zieh ich mir das per Daten aus web in mein Excel. Die Exceldatei hat 5 Reiter in der jeweils gewisse Zellen ausgefüllt werden. Dies mache ich mit einem Sverweis. Da dieser doch sehr verschachtelt und etwas komplizierter ist kommen einige Kollegen hiermit nicht klar. Nun möchte ich in VBA den Sverweis in eine Funktion schreiben damit Kollege "A" nur =Riss in das Feld eingeben muss. Meine Frage lautet wie Funktioniert das mit Folgender Formel :
{=WENNNV(SVERWEIS($E$2&$A7&$B7&$D7&$D$3;WAHL({1.2.3.4.5}; Data_accessToken_f3abXXXXXXXe7818db4af953f311d6XXXXXXXXXX[[#Alle]; [Column1.data.RepeatGroup.Typ]]&Data_accessToken_f3abXXXXXXXe7818db4af953f311d6XXXXXXXXXX[[#Alle]; [Column1.data.RepeatGroup.Rinnen_Achse]]&Data_accessToken_f3abXXXXXXXe7818db4af953f311d6XXXXXXXXXX[[#Alle]; [Column1.data.RepeatGroup.Rinnen_Nr]]&Data_accessToken_f3abXXXXXXXe7818db4af953f311d6XXXXXXXXXX[[#Alle]; [Column1.data.RepeatGroup.Rinnen_Auskleidung]]&Data_accessToken_f3abXXXXXXXe7818db4af953f311d6XXXXXXXXXX[[#Alle]; [Jahr2]];Data_accessToken_f3abXXXXXXXe7818db4af953f311d6XXXXXXXXXX[[#Alle]; [Column1.data.RepeatGroup.Rinne]]);2;FALSCH);"") }
Vielen Dank für eure Hilfe

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel als VBA FUnktion
11.01.2023 14:25:24
onur
Ohne die Datei zu haben? Sehr witzig!
AW: Formel als VBA FUnktion
11.01.2023 18:41:17
Maxi
Entschuldige bitte, ich hab vergessen den Link mit rein zu Kopieren. Hier die Datei
Leider musste ich die Power QUery abfrage entfernen und habe die Daten anonymisiert, die FUnktion der FOrmel ist allerdings weiterhin gegeben.
Im Voraus vielen Dank für eure Unterstützung.
https://www.herber.de/bbs/user/157215.xlsx
AW: Formel als VBA FUnktion
11.01.2023 16:21:14
Yal
Hallo Fe,
die Formel deuten darauf hin, dass diese Daten in Tabellen vorliegen. Es wäre am einfachste, wenn Du diese Daten per Power Query (PQ)Abfrage filterst, bzw. zusammenbringt.
Idealerweise ist der Abruf diese Daten aus dem Web auch per PQ-Abfrage gemacht. Dann könntest Du die Daten in eine Arbeitsblatt haben, anstatt in 5 verschiedenen.
Die Funktion in PQ heisst "Abfragen anfügen". Details in https://excelhero.de/power-query/power-query-ganz-einfach-erklaert#tab-con-7
Filtern geht über einen Join ("Abfragen zusammenführen")
Deine Daten sind wahrscheinlich vertraulich. Vielleicht kannst Du eine minimale Version mit anonymisierten Daten posten.
VG
Yal
Anzeige
AW: Formel als VBA FUnktion
11.01.2023 20:25:24
Maxi
Hallo Yal,
hier ist eine Anonymisierte Datei : https://www.herber.de/bbs/user/157215.xlsx
Die Daten müssen aus Dokumentationszwecken in gewissen Formaten aufgeführt werden.
Das Letzte Tabellenblatt ist meine Power Query aus dem web, und die dort aufgeführten Daten werden per Sverweis in die Richtige Zeile zurück gegeben.
AW: Formel als VBA FUnktion
12.01.2023 11:40:38
Rudi
Hallo,
ich würde in der PQ-Abfrage eine Index-Spalte erstellen, die den Suchbegriff ($E$2&$A7&$B7&$C7&$D7&$D$3) enthält. Dann kannst du die Formel auf
z.B für K =WENNFEHLER(INDEX(Datenabfrage[Column1.data.RepeatGroup.SONSTIGES_DECKEL];VERGLEICH($E$2&$A7&$B7&$C7&$D7&$D$3;Datenabfrage[Index];));"")
verkürzen.
Außerdem solltest du die Spaltenbezeichnungen ändern. Immer Column1.data.RepeatGroup. raus. Das wird übersichtlicher.
=WENNFEHLER(INDEX(Datenabfrage[SONSTIGES_DECKEL];VERGLEICH($E$2&$A7&$B7&$C7&$D7&$D$3; Datenabfrage[Index];));"")
Und wenn du dir den Index z.B. jeweils in P zusammenbaust, kannst du auf
=WENNFEHLER(INDEX(Datenabfrage[SONSTIGES_DECKEL];VERGLEICH(P7;Datenabfrage[Index];));"")
verkürzen. P kannst du ja ausblenden.
Gruß
Rudi
Anzeige
AW: Formel als VBA FUnktion
12.01.2023 17:45:44
Yal
Hallo Maxi,
das Hauptproblem liegt daran, dass es eine Menge Spalten gibt, die nur für je einen Gegenstand gelten. Man kann mit ein paar Trickserei, diese aufs wesentlich reduzieren. Man kommt aber nicht darum, eine Abfrage pro Gegenstand zu haben. Aktualisierung durch
https://www.herber.de/bbs/user/157237.xlsx
In dieser Datei findest Du 5 neuen Reiter, einen pro Gegenstand.
Die Spaltenname sind auch reduziert worden
Es ist aber nicht auszuschliessen, dass die Spaltenname-Reihenfolge oder deren Anzahl sich ändern, weil diese sind vom Inhalt Abhängig. Da wäre man eine Kombi von Sverweis und WVerweis (um den Spaltenname in Spaltennummer umzuwandeln) oder Index(.. Vegleich(..) ..)
VG
Yal
Anzeige
Aktualisierung durch Strg+Alt+F5 owT
12.01.2023 17:47:17
Yal
AW: Aktualisierung durch Strg+Alt+F5 owT
12.01.2023 22:42:25
Maxi
Vielen Dank für die Tipps und Beispiele, jedoch würde ich das ganze gerne in VBA schreiben.
Meine VBA Kenntnisse sind leider relativ gering und ich steh ein wenig aufm schlauch wie ich dies schreiben muss / Kann / sollte.
AW: Aktualisierung durch Strg+Alt+F5 owT
13.01.2023 10:15:48
Yal
Hallo Maxi,
wenn Du VBA lernen möchstest, sei willkommen. Wenn Du nur eine Lösung möchtest, fange damit an.
Je weniger über ein Thema man weisst, desto idealisierter stellt man sich die Sache vor. VBA ist keine gedankenlesende Zauberstab. Du wirst schnell eine funktionierende VBA-Lösung haben. Es wird aber genauso schnell in den Vorgaben, Datenlieferung oder was auch immer sich was ändern, dass dein VBA nicht mehr funktioniert. Du solltest bis dahin soviel VBA-Wissen oder zumindest Lösungsverstand eingeeignet haben, dass Du schnell und selbständig die Anpassung in VBA machen kannst.
Hier einen -unvollständige- Starthilfe. Die erste Aufgabe wird daran bestehen, es zu verstehen und zu ergänzen.

Public Sub LesenAblegen()
Dim LR As ListRow
For Each LR In Worksheets("Tabelle1").ListObjects(1).ListRows
Select Case LCase(LR.Range(2))
Case "schachtdeckel"
With Worksheets("Schachtdeckel").Cells(.Rows.Count, 1) 'letzte befüllte Zeile in Spalte 1
.Offset(1, 0) = LR.Range(3) 'Deckel_Achse, in Zelle 1 nach unten, 0 nach rechts
.Offset(1, 1) = LR.Range(4) 'Deckel_Nr, in Zelle 1 nach unten, 1 nach rechts
.Offset(1, 2) = LR.Range(5) 'Deckel_Form
.Offset(1, 3) = LR.Range(6) 'Deckel_Hersteller
.Offset(1, 4) = LR.Range(7) 'Deckel
.Offset(1, 5) = LR.Range(8) 'Deckel_2
.Offset(1, 6) = LR.Range(9) 'Deckel_3
.Offset(1, 7) = LR.Range(10) 'Schrauben_1
.Offset(1, 8) = LR.Range(11) 'Schrauben_2
.Offset(1, 9) = LR.Range(12) 'Schrauben_3
.Offset(1, 10) = LR.Range(13) 'SONSTIGES_DECKEL
End With
Case "dehnfugen", "dehnfuge"
With Worksheets("Dehnfugen").Cells(.Rows.Count, 1) 'letzte befüllte Zeile in Spalte 1
.Offset(1, 0) = LR.Range(14) 'Dehnfugen_Achse
.Offset(1, 1) = LR.Range(15) 'Dehnfugen_Nr
.Offset(1, 2) = LR.Range(16) 'Dehnfugen_Laenge
.Offset(1, 3) = LR.Range(17) 'Dehnfugen_Material
.Offset(1, 4) = LR.Range(18) 'Fuge_1
.Offset(1, 5) = LR.Range(19) 'Fuge_2
.Offset(1, 6) = LR.Range(20) 'Betonkante_1
.Offset(1, 7) = LR.Range(21) 'Dichtstoff_1
.Offset(1, 8) = LR.Range(22) 'SONSTIGES_DEHNFUGE
End With
Case "rinnen / pumpensümpfe", "rinne"
'jetzt Du
Case "schwellen / aufkantungen", "schwellen"
Case "dichtfläche  (grün)", "fläche"
Case Else
End Select
Next
End Sub
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige