Registriert seit: 10.04.2014
Version(en): Office 2019
06.05.2019, 10:55
(Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2019, 17:42 von WillWissen.)
(06.05.2019, 03:42)LCohen schrieb: Hallo Jockel,
vor einem Jahr warst Du noch bereit zu Formellösungen. Warum jetzt so häufig der Allgemeinplatz PQ? Im Grunde ist das eine Antwort wie: "Excelformeln sind out. Lerne PQ - helfen tun wir dabei nicht, und Formelfragen sind nun aus der Sicht von uns PQ-Verfechtern genug im Netz beantwortet."
Ich fände für PQ ein "Konstruktionsmakro" fair. Dabei werden die PQ-Schritte (falls sie denn überhaupt aufgezeichnet werden können) 1. schrittweise gezeigt und 2. die neuen Excel-Objekte dazu vermittelt, wenn man sich auch noch die Mühe macht, die Aufzeichnung zu bearbeiten. Ist auch egal, mit welcher Version. Vermutlich wäre es mit 2016, 2019 oder 365 halbwegs gleich (wobei 365 sich immer ändern kann), da dort jeweils fest eingebaut, kein Add-In.
Moin, einfache Antwort, weil es einfach einfacher ist (für dich nicht, ist klar) und die Arbeit erleichtert. Hier braucht's zwei Schritte, da hast du mehr Text in deinen Formeln. Zurzeit mag ich Power Query. Es stellt für mich bei solchen Fragen mehr als eine Alternative dar und man kann es ab XL2010 nutzen. Man muss dazu kein Insider sein.
Klar guck ich auch gern nach Formeln. Ich hätte auch die eine oder andere anbieten können. (Ob du es mir glaubst oder nicht) Aber hier: Bitte!
Formellösungen wird es immer geben (na ja vielleicht nicht immer), aber die Welt dreht sich nun mal. Und Excel in seinem Lauf halten weder Ochs noch Esel auf... Zudem sehe ich durch alle Foren hinweg, dass PQ einen schweren Stand hat - auch weil Frager nicht bereit sind eine Lösung zu hinterfragen. Am besten sind aber "Edel"helfer, die user anpflaumen, wenn es darum geht andere Formelwege zu gehen... und user belehren, nicht alles so zu machen, wie der Boss es will oder wie man es schon immer gemacht hat.
Dort spielt einer der Betreiber einer der renommiertesten Internetseiten mit lauter Excelformeln eine Vorreiterrolle. Schreibt in einem anderen renommierten Forum Power Query öffentlich schlecht, obwohl von dem, was er dort schreibt nichts der Wahrheit entspricht. Ich vermute mal dass der "Power Query- Beauftragte" dieser Plattform auch deswegen nicht weiterkommt...
Ein "Konstruktionsmakro" gibt es ja. Im Hintergrund wird ein M-Code kreiert (, den man kommentieren kann), den man gar nicht beherrschen oder lernen muss, weil menügesteuert (!). Diesen kann man kopieren und auf andere Anfragen anwenden (gegeben falls muss - wie bei Formeln auch - angepasst werden)
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht
"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
06.05.2019, 11:07
(Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2019, 11:20 von LCohen.)
Solange 2/3 aller PQ-Vorschläge "Machs doch mit PQ" (und nicht weiter) lauten, ist das in einem Forum, bei dem dann ja doch irgendwann mal Lösungen erwartet werden, ein Treppenwitz.
"Wie kriege ich die Fehler aus meinem Diktat?"
"Indem Du mehr lies'st, Kind!"
Das ist genau das Gleiche. Es ist absolut richtig. Aber.
Registriert seit: 10.04.2014
Version(en): Office 2019
Hallo, dann lies doch bitte noch mal, ich habe die (beiden nötigen) Schritte doch aufgeschrieben, so wie du deine Formeln. Und: der TE kannte das und will es nicht. Sind wir dabei, ein Problem zu erschaffen, wo es nicht nottut..? Genau das ist das, was ich meine... Schade.
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht
"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
06.05.2019, 11:25
(Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2019, 11:26 von LCohen.)
Ging mehr um die WF-Nummer.
Manche 70j. wie GM lernen noch begeistert Neues. Andere bleiben gern bei dem, was sie schon können.
Übrigens: Ich stehe mit "Konstruktionsmakros" völlig allein auf weiter Flur. Da geht es PQ viel besser.
Registriert seit: 29.09.2015
Version(en): 2030,5
06.05.2019, 11:50
(Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2019, 11:51 von snb.)
Ich stimme LCohen völlig zu: 'verwende PQ' oder 'das kan PQ' ist nicht hilfrecih.
In VBA
Code: Sub M_snb()
Application.DisplayAlerts = False
with Sheet1
.Columns(2).Insert
.Columns(1).TextToColumns , , , , 0, 0, 0, 0, -1, "/"
.Cells(1).CurrentRegion.Offset(, 1).Copy .Cells(Rows.Count, 1).End(xlUp).Offset(1)
.UsedRange.Columns(2).Offset(.Columns(3).SpecialCells(2).Count).Copy .Cells(Rows.Count, 3).End(xlUp).Offset(1)
.Columns(2).Delete
end with
End Sub
Registriert seit: 10.04.2014
Version(en): Office 2019
(06.05.2019, 11:50)snb schrieb: Ich stimme LCohen völlig zu: 'verwende PQ' oder 'das kan PQ' ist nicht hilfrecih... Hier wurde explizit beschrieben, was und wie es zu tun ist. Ich komme ohne Text - dein VBA code musste ja geschrieben werden - aus mit zwei Klicks. Man muss es nicht mögen (vor allem wenn man hier nur oberflächlich irgendetwas populistisch "abschreibt") Dann kann man aber auch einfach die Finger von der Tastatur lassen. Der TE will es zudem sowieso nicht. Apropos hilfreich: Die Autokorrektur (T9) kann man auch ausschalten... kan manchmal hilfrecih sein... (^_-)
Noch mehr muss man zu dem Thema auch nicht schreiben. Ich bin raus.
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht
"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
06.05.2019, 14:49
(Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2019, 15:27 von LCohen.)
Hier mein erstes PQ-Konstruktionsmakro.
Was bedeutet Konstruktionsmakro? VBA wird nur dafür verwendet, eine VBA-lose Datei, hier mit einem PQ, zu erstellen. Es wird zunächst mal eine neue Datei mit neuen Testdaten erstellt, also eine "Rundum-Sorglos-Lösung": Auch die Testdaten sind schon im Makro.
- a) VBA nimmt einem händische Arbeit ab; und dann
- b) ist ein Konstruktionsmakro nicht 8 KB groß, wie eine leere xlDatei, sondern meist 1 KB oder weniger. Und man
- c) benötigt keine Anhänge, da man den sich mit dem Code eben selbst erstellt. Somit ist der CODE unkaputtbar im Forum-Textteil selbst, und kann nicht wie die Dateien in Office-Lösung bis 2014 verloren gehen. Und
- d) lässt einen der Code verstehen, was PQ alles einstellt.
Ich bin noch völlig unbeholfen darin, es hübscher und kürzer zu machen, da ich mich mit PQ erst vertraut machen muss : - vor allem die lange Anweisung "Queries.Add" richtig aufzuteilen und umzubrechen;
- sogar an das .Select traue ich mich hier noch nicht ran
- beim "Listobjects.Add" gibt es sicherlich wie immer in VBA weglassbare Definitionen.
___________________________________________________________________________________________
Sub EinPQKonstruktionsmakro(): Workbooks.Add xlWorksheet
[A1:A4] = WorksheetFunction.Transpose(Split("A 123/4 '5/6 '7/89"))
'--- Bis hier ist die Test-Datei erstellt. Ab jetzt nur noch PQ! ---
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$A$4"), , xlYes).Name = "Tabelle1"
Range("Tabelle1[[#All],[A]]").Select
'--- Beim Kopieren folgender langer Code-Zeile müssen vermutlich harte Umbrüche (außer "& _") weg! ---
ActiveWorkbook.Queries.Add Name:="Tabelle1", _
Formula:="let" & Chr(13) & "" & Chr(10) & " Quelle = Excel.CurrentWorkbook(){[Name=""Tabelle1""]}[Content]," & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"" = Table.TransformColumnTypes(Quelle,{{""A"", type text}})," & Chr(13) & "" & Chr(10) & " #""Spalte nach Trennzeichen teilen"" = Table.SplitColumn(#""Geänderter Typ"", ""A"", Splitter.SplitTextByDelimiter(""/"", QuoteStyle.Csv), {""A.1"", ""A.2""})," & Chr(13) & "" & Chr(10) & " #""Geänderter Typ1"" = Table.TransformCol" & _
"umnTypes(#""Spalte nach Trennzeichen teilen"",{{""A.1"", Int64.Type}, {""A.2"", Int64.Type}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Geänderter Typ1"""
'--- ... wäre schön, wenn das noch strukturiert werden könnte. ---
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Tabelle1;Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Tabelle1]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Tabelle1_2"
.Refresh BackgroundQuery:=False
End With
End Sub
möglicherweise so, oder so ähnlich, etwas strukturierter:
r = Chr(13) & "" & Chr(10)
ActiveWorkbook.Queries.Add Name:="Tabelle1", Formula:="let" & r & _
" Quelle = Excel.CurrentWorkbook(){[Name=""Tabelle1""]}[Content]," & r & _
" #""Geänderter Typ"" = Table.TransformColumnTypes(Quelle,{{""A"", type text}})," & r & _
" #""Spalte n. Trennz. teilen"" = Table.SplitColumn(#""Geänderter Typ"", ""A"", Splitter.SplitTextByDelimiter(""/"", QuoteStyle.Csv), {""A.1"", ""A.2""})," & r & _
" #""Geänd. Typ1"" = Table.TransformColumnTypes(#""Spalte n. Trennz. teilen"",{{""A.1"", Int64.Type}, {""A.2"", Int64.Type}})" & r & "in" & r & " #""Geänd. Typ1"""
Registriert seit: 10.04.2014
Version(en): Office 2019
06.05.2019, 15:18
(Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2019, 15:26 von Jockel.)
Ich gebe zu ich habe das mal wieder unterschätzt. Das Wort "Konstruktionsmakro" kannte ich nicht und kenne ich nicht. VBA kann ich gar nicht. Ich hätte es einfach bei meinem Vorschlag belassen sollen. Das mache ich auch jetzt, weil ich auch gar nicht weiß, wozu das gut sein soll. Ich will das aber auch gar nicht wissen. Ich mache das auch nicht schlecht. Ich bin einfach nur raus.
P.S.: Ich habe mit Absicht sooft wie möglich ich geschrieben...
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht
"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
06.05.2019, 15:30
(Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2019, 15:39 von LCohen.)
Konstruktionsmakros (meine Wortschöpfung) ergeben heute kaum Sinn.
Sie sind jedoch die einzige Möglichkeit, geballtes Expertenwissen (z.B. 1000 verschiedene "Dateien" mit oder ohne Makros) in einer Datei von weniger als 1 MB zu verstauen, da der xlsx.-Overhead von 8 KB nur einmal statt 1000mal anfällt.
Braucht heute keiner mehr, aber es wird mich intellektuell bis zu meinem Ableben reizen. Nur mich! Andere nicht! Ich fahre ja auch nur Dreizylinder statt SUV. Bzw.: Ein Fahrrad würde mir auch reichen. Ohne Elektro. Jedem seine persönliche Meise
Übrigens: Ich kann VBA eigentlich auch nicht. Ich habe mir nur angeschaut, was aufgezeichnet wird und getestet, welche Defaults mit aufgezeichnet werden (damit man die Sprache versteht, danke, MS!). So dass man die Defaults dann weglassen kann.
Registriert seit: 10.04.2014
Version(en): Office 2019
(06.05.2019, 15:30)LCohen schrieb: ....Jedem seine persönliche Meise Das ist für mich persönlich hier ein schöner Abschluss, obwohl es mal wieder geschafft wurde ein dunkles Tuch über PQ zu werfen. Aber egal. Es wird wärmer draußen...
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht
"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
|