Werte aus SAP kopieren und in Excel einfügen
#11
also Leerzeichen. Dann wird der Text in passende Teile zerlegt.

Packe mal den Rohtext in Zelle B16 und trage in die Zielzellen den jeweilige Wunschteil deines in B16 eingefügten Strings aus SAP (falls streng geheim anonymisiere den String aus SAP entsprechend). 

Lade dann diese Datei hier hoch. Mit einer kleinen LET() Funktion sollte das machbar sein. Natürlich ebenso mit PQ kein Problem. 

Aber ohne konkrete Vorgaben bleibt nur rätseln übrig.
 
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:
  • Warkings
Antworten Top
#12
Zitat:Bei 367 Stunden Einsparung pro Jahr hätte man andererseits einen fünfstellligen Betrag zur Verfügung,

Nicht wirklich, man spart doch keine Lohnkosten. Die Mitarbeiter müssten die 367h wertschöpfend tätig sein, also z.B. mehr Aufträge akquirieren. 
Mit anderen Worten: Die ROI-Rechnung auf Basis von Lohnkosten bzw. "eingesparter Zeit" ist theoretisch.

Das Argument liegt eher in Qualität und Effizienz: Weniger Fehler beim Kopieren führen zu einer besseren Datenqualität. 
Die eigentliche Frage ist jedoch, ob das Vorgehen des OP aus Unternehmenssicht überhaupt sinnvoll ist.

Abgesehen davon, um zur Excel-Frage zurückzukommen: Es wäre hilfreich, wenn der OP zunächst einige grundlegende Fragen beantwortet (Transaktion, Table Control , ALV Grid, ...?). 
Ohne weitere Informationen (Beispieldaten vielleicht) bleibt die Diskussion auf einer sehr allgemeinen Ebene.
Antworten Top
#13
Hallo,

Zitat:... werden beim Einfügen in Excel nur in eine Spalte bz. Zelle B16 eingefügt.
Da ich die Werte in den Zellen C16, D16, E16, F16 und G16 brauche, gehe ich über den Weg Text in Spalte, getrennt, Tabstopp und Leerzeichen

da du als Version auch Excel365 angegeben hast, müsste folgende Formel in C16 funktionieren:
=TEXTTEILEN(B16;HSTAPELN(" ";ZEICHEN(8)))
und diese Formel in die weiteren Zellen hinunterziehen, falls du weitere Zeilen ab Zelle B16 befüllt hast.

oder aber eine REDUCE-Formel, wenn die Zellen B16,B17,..,bis max. B99 befüllt sind, genügt diese eine Formel in C16:
=LET(r; WENNFEHLER(REDUCE("";$B$16:.$B$99; LAMBDA(akk; z; VSTAPELN(akk; TEXTTEILEN(z; HSTAPELN(" ";ZEICHEN(8))))));"");WEGLASSEN(r;1))
Gruß Anton.

Windows 11 64bit
Microsoft365 Insider 64bit
Antworten Top
#14
Hallo zusammen,

mit PQ kenne ich mich nicht aus und habe ich mich auch noch nicht mit beschäftigt, trotzdem danke für alle Ansätze und eure Vorschläge.

Ich habe mir mal versucht ein Makro aufgezeichnet was sogar fast funktioniert.
Das was nicht funktioniert ist, wenn die Zelle B16 z.B. leer ist oder der Curser wo anders steht, bekomme ich ein Fehler.

Danke für jegliche Hinwiese und Hilfen.

Testdatei hänge ich mal mit an!


Angehängte Dateien
.xlsm   Text_in_Spalte.xlsm (Größe: 21,73 KB / Downloads: 9)
Gruß
Dietmar

Damit das Mögliche entsteht, muß immer wieder das Unmögliche versucht werden.  
Antworten Top
#15
Hallo,

meine Formeln aus Posting#13 müssten ja doch funktionieren - ohne VBA und ohne PQ.
Gruß Anton.

Windows 11 64bit
Microsoft365 Insider 64bit
Antworten Top
#16
@warkings
Zitat:Nicht wirklich, man spart doch keine Lohnkosten.

Klar, wegen 3 Stunden pro Mitarbeiter und Jahr eher nicht. Schlimmstenfalls geht das in ein paar Tassen Kaffee mehr unter.
Wenn man irgendwann 3 Platzhirsche aus der Buchhaltung nicht mehr braucht, dann schon...

Ich habe über 20 Jahre eine Software einer kleinen Tochtergesellschaft eines großen Konzerns mit auf 5 Kontinenten verteilten Produktionsstätten mitentwickelt und betreut. Mitte der 90er gab es da noch nix einheitliches im Konzern, es wurden Entwicklungen gestartet. Was es da aus dem Stammwerk gab war für die Tochter allerdings einerseits zu teuer und andererseits zu unhandlich. War übrigens beides auf Basis Excel.
Dass die kleine Tochter die Konzernsoftware später auch nicht einsetzen musste, obwohl es dazu viele Anläufe seitens des Konzerns gab, lag unter anderem daran, dass bei Einsatz der Konzernsoftware das Personal der Tochter hätte aufgestockt werden müssen. Zumindest theoretisch wurden dadurch einige Kosten eingespart. Praktisch leider nicht, klar.
Über die Jahre wurde das Sortiment der kleinen Tochter erweitert. Der sich daraus für die Personalplanung hätte ableiten müssende zusätzliche Personalbedarf wurde allerdings nicht geplant.
Er wurde wiederum durch weitere Entwicklung stark reduziert. Das schlimme dran ist - es hat Zusatzkosten verursacht - Softwareentwicklung war auch nicht geplant.
Ok, hätte man nicht entwickelt, hätte man das Ganze vielleicht durch Überstunden erst mal verschleiern können ...

Ist wie mit der Digitalisierung in Deutschland. Alle reden davon, aber die einen wollen kein Geld ausgeben und die anderen haben Angst vorm Datenkraken. Da lobe ich mir Estland Wink
Die Zukunft ist jetzt – der Alltag im digitalen Estland
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#17
Inwiefern sind damit meine Aussagen zu dem ROI Argument "Lohnkosten" widerlegt. 
Entweder man entlässt dann wirklich Mitarbeiter oder die "gewonnene Zeit wird genutzt, um Mehrwert zu schaffen. 

Ich denke eher, dass das Argument "Qualität und Effizienz" wichtiger ist, das kann man aber nicht so schön rechnen.
Und das schreibst Du ja auch selbst zu Deiner Entwicklung: Effizienz und damit kein Personalaufbau, aber Personalabbau gab es nicht.
Zitat:... zusätzliche Personalbedarf   ...Er wurde wiederum durch weitere Entwicklung stark reduziert. 
Antworten Top
#18
Zitat:Entweder man entlässt dann wirklich Mitarbeiter

... genau das meinte ich damit Wink
... Oder man macht das sozialverträglich - dann wirkt die Einsparung halt' erst in einiger Zeit Wink
... Oder man bringt das eingesparte Personal in einer anderen Abteilung unter und reduziert die Arbeitszeit bei vollem Lohnausgleich. 18 Dann hat zwar der Betrieb nur einen Effizienzgewinn und keine Einsparung, aber die Abteilung hat beides Wink

Na ja, vereinfacht gesagt, so ist die "Planwirtschaft" eben, egal ob das Ding nun Konzern heißt oder oder Kombinat hieß. OK, im Konzern heißt das "Planungsrunde", gar nicht zu vergleichen. Fast wie Ärztehaus und Poliklinik 15

dann noch zur Frage des TE

Aufgezeichnet kann es so aussehen:

Zitat: Selection.TextToColumns Destination:=Range("B16"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _
TrailingMinusNumbers:=True

Ersetzen tust Du Range("B16") - wie geschrieben - durch ActiveCell, dann also

Zitat: Selection.TextToColumns Destination:=ActiveCell, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _
TrailingMinusNumbers:=True

Fall Du beim Aufzeichnen die Zelle gewechselt und das mit im Code hast, z.B. Range("B16").Select, das muss auch raus, sonst wird das immer in B16 versucht ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#19
Hallo Dietmar,

Formel in Zelle C16:
Code:
=SPALTENWAHL(WERT(TEXTTEILEN(B16;" "));1;2;3;4;5)
so wie in #1 von dir beschrieben reicht das. Und es sind echte Zahlen. Falls die Einzelwerte an verschiedenen Zellen ausgegeben werden sollen kann man diese in eine LET() packen und in den betreffenden Zelle den gewünschten Wert aus der Variable ausgeben.

Anbei ein Beispiel wie so was funktioniert.

.xlsm   Text_in_Spalte.xlsm (Größe: 21,85 KB / Downloads: 1)

Gruß Uwe
Antworten Top
#20
@Dietmar,

der wichtige Punkt ist, ob Du die Ausganswerte in B16 behalten willst oder nicht.

Deine Vorgehensweise Text in Spalten deutet eher darauf hin, dass Du das nicht willst. Das würde das Ergebnis in B16:F16 ausgeben.
Andererseits schreibst Du, dass das Ergebnis in C16:G16 erscheinen soll. Was passiert dann mit B16? Hast Du einen Zwischenschritt nicht beschrieben?
Du schreibst nicht, dass Du zusätzlich eine Kopie in C16 einfügst, um damit Text In Spalten auszuführen.
Dass Du das Ergebnis von Text in Spalten von B16:F16 nach C16:G16 verschiebst oder B16 löschst, schreibst Du nicht.
Es kann natürlich sein, dass da vor dem ersten Wert was ist, wodurch dieser dann in C16 erscheint. In Deiner Beispieldatei ist da aber nichts.

Wenn Du also die Quelldaten behalten willst, sind die Formellösungen der einfachere Weg.

Wenn nein, müsstest Du zumindest für diesen Fall noch das Ergebnis kopieren und z.B. mit Inhalte einfügen | Werte in Werte umwandeln und anschließend B16 löschen.

Wenn nein, geht es mit VBA schneller. Du kannst gleich in C16 einfügen und das Makro starten. Man könnte das auch in ein Ereignismakro packen, dass bei Änderung der Zelle reagiert.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste