Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Rechnet nicht nach Einfügen aus Zwischenablage

Rechnet nicht nach Einfügen aus Zwischenablage
23.09.2024 13:01:53
Simon
Hallo...

habe Probleme beim auswerten der Daten...
wenn ich diese per Hand eintrage wird alles angezeigt.
Hole ich diese aus der Zwischenablage geht es nicht...
Die Daten sind hinter dem Button da, nicht so wie es sollte aber da...
Woran liegt es??

Auch könnte man das Level mit aus der Zwischenablage holen, weiß nicht wie.

https://www.herber.de/bbs/user/172345.xlsm
Muster Tabelle

https://www.herber.de/bbs/user/172346.xlsx
Text aus der Zwischenablage mit Erklärung

Oder erst die Zwischenablage in ein anderes Feld schreiben und von dort die Daten holen?
Sollte alles mit den drücken auf den Button geschehen.

Vielen Dank für Eure Hilfe
Anzeige
AW: Rechnet nicht nach Einfügen aus Zwischenablage
23.09.2024 13:34:08
daniel
hi
deine Nachfolgende Funktion, mit der du den eingefügten Text auswertest (xmlfilter) benötigt als Trennzeichen zwischen den Werten die Zeichenfolge Komma+Leer (", ")
in den Daten aus der Zwischenablage ist aber das Trennzeichen der Zeilenumbruch (Zeichen(10))
also darfst du diesen nicht einfach eleminieren:

ActiveSheet.Range("B3") = Replace(txt, Chr(10), "")

sondern musst stattdessen die von der Formel benötigte Zeichenfolge einsetzen:

ActiveSheet.Range("B3") = Replace(txt, Chr(10), ", ")

Gruß Daniel
Anzeige
AW: Rechnet nicht nach Einfügen aus Zwischenablage
23.09.2024 13:55:05
Simon
Hallo Daniel

es so schreibe: ActiveSheet.Range("B3") = Replace(txt, Chr(10), ", ")
habe ich dann noch mehr Leerzeichen vor und hinter den Zahlen und 2 Kommas...
1,, 2,, 3,, usw
AW: Rechnet nicht nach Einfügen aus Zwischenablage
23.09.2024 14:27:57
daniel
du brauchst ein Trennzeichen zwischen den Werten, und dieses Trennzeichen muss mit einer Funktion, mit der du den Text nachfolgend auswertest, abgestimmt sein.

dh du musst als erstes prüfen, welches Zeichen oder Zeichenfolge (es können auch mehrere sein, häufig die Kombination aus Zeichen 13 und Zeichen 10) in der zwischenablage tatsächlich verwendet wird, und dann musst du diese Zeichen bzw Zeichenfolge mit REPLACE in die Zeichenfolge umbauen, die deine Formel benötigt.

dh ich kann dir jetzt nicht genau sagen, was du durch was ersetzen musst, weil mir ja deine echten Daten nicht vorliegen.
diese Analyse müsstest du selber machen.


Gruß Daniel
Anzeige
AW: Rechnet nicht nach Einfügen aus Zwischenablage
23.09.2024 14:46:35
Simon
Habe doch den Text aus der Zwischenablage in der unteren Excel Tabelle mit hochgeladen...
AW: Rechnet nicht nach Einfügen aus Zwischenablage
23.09.2024 15:14:38
daniel
ja hab ich gesehen und damit auch getestet.
bei mir funktioniert das mit der Änderung, sowie ich sie beschrieben habe.

du musst nur beachten, dass du nicht die letzten 4 Werte herausziehen darfst, sondern den 5.- 4.- 3. - und 2.letzten Wert, weil der letzte Wert noch die Leerzeichen sind, die vor dem "]" stehen und weil das "]" in einer eigenen Zeile steht, so dass im Text noch ein Umbruch nach dem von dir erwarteten letzten Text steht somit ein weiterer Eintrag.
das musst du aber in der Formel mit xmlFilter berücksichtigen

noch besser wäre:
ActiveSheet.Range("B3") = Replace(txt, vbCrLf, ", ")
weil in der Zwischenablage das Trennzeichen zwischen den Zeilen die Zeichenkombination aus Zeichen(13) und Zeichen(10) ist.
in VBA kann man diese Kombination durch die Variable vbCrLf darstellen
(Abgeleitet aus den alten Steuersignalen für Fernschreiber: CarridgeReturn + LineFeed = Wagenrücklauf + Zeilenvorschub)

Gruß Daniel
Anzeige
AW: Rechnet nicht nach Einfügen aus Zwischenablage
23.09.2024 15:21:39
Simon
sieht jetzt so aus habe aber immer noch nach dem Komma einige Leerzeichen

Sub AusZwischenablage_zwischen_Klammern3()

Dim DaOb As DataObject
Dim txt As String
Dim Pos1 As Long
Dim Pos2 As Long

'-----------------------------------------------------
' Vor erstellen des Codes
' aktiviere unter EXTRAS - VERWEISE den Verweis:
' Microsoft Forms 2.0 Object Library
'-----------------------------------------------------

'text aus zwischenablage holen
Set DaOb = New DataObject
DaOb.GetFromClipboard
txt = DaOb.GetText

'text zwischen eckigen Klammern ermitteln
Pos1 = InStr(txt, "[") + 10
Pos2 = InStr(txt, "]")

If Pos1 > 0 And Pos2 > Pos1 Then
txt = Left(txt, Pos2 - 1)
txt = Mid(txt, Pos1 + 1)

'Text in feste Zelle einfügen
ActiveSheet.Range("B3") = Replace(txt, vbCrLf, ", ")
Else
Beep
End If

End Sub

1,
2,
4,
5,
9,
6,
3,
49,
7,
14,
11,
16,
13,
10
so sieht es aus wenn ich es raus kopiere B3

Hast du noch eine Idee zum Level??
Anzeige
AW: Rechnet nicht nach Einfügen aus Zwischenablage
23.09.2024 15:37:17
daniel
naja, sieht doch gut aus.
das Komma+Leerzeichen brauchst du ja hinterher für den XML-Filter
wie sieht denn das Ergebnis aus?

wo kommen die Werte ab 16 her?
in der Beispieldatei ist bei 11 Ende, danach kommt die Klammer zu.

Userbild

eine Bitte: Wenn du meine Lösungen testest, dann verwende bitte immer nur die Informationen und Daten, die du mir zur Verfügung gestellt hast und keine anderen.

Gruß Daniel
Anzeige
AW: Rechnet nicht nach Einfügen aus Zwischenablage
23.09.2024 16:12:37
Simon
Kann sein das ich zum Testen jetzt eine andere Stadt genommen habe oder die Stadt schon ein Level weiter ist, die Zahlenlänge geht bis 61 verschiedene Zahlen.
zwischen den Zahlen sind wohl zu viele Leerzeichen und den Textumbruch kann die Formel auch nicht verarbeiten.

In der Zelle steht alles hintereinander nur wenn ich es rauskopiere dann untereinander..


Ich wollte auch noch das Level mit auslesen, aber das wird wohl nichts...
Anzeige
AW: Rechnet nicht nach Einfügen aus Zwischenablage
23.09.2024 16:29:51
daniel
Hi
wie gesagt, ich kann nur Lösungen entwickeln für das, was du mir gibst.
von daher solltest du so fair sein, meine Lösungen nur anhand dem zu bewerten, was du mir zur Verfügung gestellt hast.

warum sollte es nicht möglich sein, das Level mit auszulesen?
wenn man weiß, wo es steht und wie man es finden kann, sollte das funktionieren.

wo kopierst du denn die Daten?
können wir da zugriff darauf haben, damit wir damit testen können, womit du tatsächlich arbeitst?
vielleicht kannst du die Zwischenablage auch erstmal in den Texteditor einfügen und die Textdatei hochladen?
Excel verändert ja die die Eingefügten Daten, damit diese in das Tabellenschema passen.
Gruß Daniel
Anzeige
AW: Rechnet nicht nach Einfügen aus Zwischenablage
23.09.2024 16:47:04
Simon
wir bekommen die Daten über das DevTool.
Level steht in der Zwischenablage Datei mit dir und auch wo ganz oben beschrieben...
ich kann auch zum Testen dann immer das nehmen was in der Datei steht...

https://www.herber.de/bbs/user/172361.txt

Zwischenablage so wie ich sie bekomme nur als txt...
Rote Zeile sind die wir brauchen...
Level
Incoming

kann dann die auch zum Testen nehmen...

Anzeige
AW: Rechnet nicht nach Einfügen aus Zwischenablage
23.09.2024 17:05:06
daniel
HI
ich hab jetzt keine Anhnung, was das Dev-Tool ist, aber mit den Daten aus der Textdatei funktioniert es so:

ActiveSheet.Range("B3") = Replace(txt, vbCrLf, "")

das Komma ist schon mit drin, aber das Komma verschwindet, wenn du die Daten nach Excel einfügst, weil Excel ein "1," in einer Zelle als die Zahl 1 interpretiert und diese als Ganzzahl ohne Komma und ohne Nachkommastellen anzeigt.
der Unterschied zur deiner ersten Lösung ist, dass du nur den LineFeed (Zeichen 10) rausgelöscht hast aber nicht den CarridigeReturn (Zeichen 13)
hier wird beides verwendet, daher muss man auch beides rauslöschen.

und zum Level hast du auch nur geschrieben, dass du nicht weißt wie du den ermitteln sollst.
also sage mir bitte, wo der Level im Text steht und welche Daten du da haben willst.

Gruß Daniel
Anzeige
AW: Rechnet nicht nach Einfügen aus Zwischenablage
23.09.2024 17:09:05
Simon
Danke
versuche es dann gleich..

Level steht in der Txt Datei auf Seite 1 auch wieder in Rot...
Brauche dann den Wert in B4 müsste jetzt 11 sein...
AW: Rechnet nicht nach Einfügen aus Zwischenablage
23.09.2024 17:25:11
daniel
HI
einfache Textdateien habe nur Text und keine Formatierung!
ich sehe also nicht, was du rot gemacht hast.

Im Prinzip kannst du so ähnlich vorgehen, wie beim anderen Problem:
als erstes die Position von "Level" suchen und dann die Position des nächsten Kommas nach dieser Position.
dein Level-Wert ist dann der Wert dazwischen. das "+8" kommt noch hinzu, weil das Instr die Position des ersten Buchstabens des gesuchten Textes ermittelt du aber diese ersten Zeichen nicht benötigtst:

txt = DaOb.GetText

Pos1 = InStr(txt, "Level") + 8
Pos2 = InStr(Pos1, txt, ",")
txt = Left(txt, Pos2 - 1)
txt = Mid(txt, Pos1)
Range("C3").Value = txt

Gruß Daniel
Anzeige
AW: Rechnet nicht nach Einfügen aus Zwischenablage
23.09.2024 18:47:12
Simon
Danke..
Versuche es dann mal einzubauen...

Das sind die ersten Zeilen der Zwischenablage....
Dort seht so in der Mitte "Level"

{
"Errorcode": 0,
"Infos": {
"activeUser": "30e46bf2-a2f3-be6b-585c-9ed27af96358",
"Resources": "{\"1\":\"1597\",\"2\":\"19785\",\"3\":\"1\",\"4\":\"1\",\"7\":\"0\",\"9\":\"0\",\"10\":\"0\",\"61\":\"20\",\"62\":\"0\",\"63\":\"0\",\"65\":\"0\",\"66\":\"0\",\"67\":\"1\",\"68\":\"1\",\"69\":\"1\",\"70\":\"34\",\"71\":\"41\",\"73\":\"1597\",\"78\":\"2\",\"83\":\"0\",\"0\":\"3927676\"}",
"specialClientVersion": "9041fd8852a32d947f73b2b26ba722c8",
"Position": -1,
"debug": 0,
"JackpotInfo": "ead8c350-5f92-c104-f526-574155c2de7a:-434542:12461",
"PremiumSurveysInfo": "0",
"Server-Time": 0.04635882377624512
},
"Body": {
"Level": 11,
"StoragesInfo": {
"WaitTime": {
"base": 180,
"utilisation": 206,
"passengerSalePromotion": 103,
"personality": 103,
"timedBonus": 103,
"noob": 103,
"final": 103
},


Dir aber schon mal vielen vielen Dank...
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige