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

Fragen zu Pastespecial Methode

Fragen zu Pastespecial Methode
29.01.2019 08:16:36
Philipp
Hallo,
ich habe eine Tabelle die Text sowie Zahlen beinhaltet. Diese kopiere ich per VBA und füge sie unterhalb der kopierten Tabelle ein. Jetzt möchte ich:
1. das der Text an sich eingefügt und
2. Zahlen wenn im Einfügebereich vorhanden aufaddiert werden.
Ersteres funktuioniert mit:
.PasteSpecial Paste:=xlPasteAll, SkipBlanks:=True
Zweiteres mit:
.PasteSpecial Paste:=xlPasteValues, SkipBlanks:=True, Operation:=xlPasteSpecialOperationAdd
Nur das beides zusammenausgeführt wird bekomme ich nicht hin. Kann mir da jemand helfen?
Grüße,
Philipp

31
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fragen zu Pastespecial Methode
29.01.2019 08:31:42
Daniel
Hallo Philipp,
vielleicht könntest du schon beim kopieren ansetzen, und erst die Zahlen und dann die Texte kopieren und mit PasteSpecial einfügen? Etwa so:

Cells.SpecialCells(xlCellTypeConstants, xlTextValues).Copy
Cells.SpecialCells(xlCellTypeConstants, xlNumbers).Copy
Gruß
Daniel
AW: Fragen zu Pastespecial Methode
29.01.2019 09:12:47
Philipp
Hallo,
der Befehl:
Range(Cells(i - 2, 1), Cells(i, int_spalte - 2)).SpecialCells(xlCellTypeConstants, xlTextValues).Copy
erzeugt bei mir einen 1004`er Laufzeitfehler wenn ich eine Range kopieren will. Geht das kopieren von Bereichen mit dem Befehl?
grüße
Anzeige
AW: Fragen zu Pastespecial Methode
29.01.2019 09:24:07
Daniel
Ja das geht. Vielleicht verweisen deine Variablen auf einen nicht zugängigen Bereich? Sowas wie Zeile -1. Ansonsten kann man ohne weitere Infos nicht mehr viel dazu sagen.
Gruß
AW: Fragen zu Pastespecial Methode
29.01.2019 09:35:35
Daniel
Hi
nur mal so als Überlegung:
mit dem .SpecialCells wähle ich ja einen diskontinuierlichen Zellbereich aus (z.B. A1, A3, A5)
wenn ich so einen diskontinuierlichen Zellbereich kopiere und anderer Stelle einfügen, so wird Excel die kopierten Zellen wieder zu einem kontinuierlichen Zellbereich zusammen ziehen und als B1:B3 wieder einfügen!
Dies ist aber hier warscheinlich nicht gewünscht, sondern die Texte aus A1, A3 und A5 sollen vermutlich wieder mit den gleichen Abständen in B1, B3 und B5 eingefügt werden.
desweitern ist zu beachten, dass das kopieren eines diskontinuierlichen Zellbereichs über mehrere Zeilen und mehrere Spalten nicht immer möglich ist, sondern nur bei einer bestimmten Anordnung der Werte, die sich Problemlos zu einem kontinurierlichen Zellbereich zusammenziehen lässt.
Gruß Daniel
Anzeige
Das geht nicht, ...
29.01.2019 16:05:28
Luc:-?
…Philipp;
hier irren die beiden Daniels. Schon die Ausführung des Copy-Befehls wird verweigert, wie von dir richtig festgestellt wurde. Weder Xl (wie bei manueller Auswahl festzustellen) noch VBA machen sich die Mühe, festzustellen, ob der kopierte diskontinuierliche Bereich irgendwie zusammenhängend abbildbar ist, was ja letztlich das EndZiel nahezu jedes KopierVorgangs ist.
So etwas kann man ggf aber mit der Xl-Fkt INDEX erreichen. Problematisch kann hierbei allerdings die Ermittlung der TeilBereiche wdn. Auch ist die Fml oft recht unhandlich, wie im folgd Bsp:
1. Vorausgesetzt der GesamtBereich wäre A1:E10;
2. Texte stehen in A1:C5 und D7:E10;
3. die INDEX-Fml (im TabBlatt!) könnte dann bspw so aussehen:
{=WENNFEHLER(INDEX((A1:C5;D7:E10);ZEILE(1:5);{1.2.3.1.2};{1.1.1.2.2;1.1.1.2.2;1.1.1.2.2;1.1.1.2.2; 1.1.1.2.2});"") }
Gruß, Luc :-?
Anzeige
AW: Das geht nicht, ...
29.01.2019 16:21:26
Daniel
Hallo Luc - ich hoffe, er steigt durch deinen Text durch... das ist ja fürchterlich zu lesen! Magst du bitte so höflich zu uns allen sein, die Wörter auch auszuschreiben? Fast so schlimm wie der Genderstern...
Stimmt, das Kopieren so funktioniert nur in Ausnahmen bei mehrspaltigen Bereichen. Insofern hoffe ich, Philipp kann mit deinem Ansatz arbeiten.
VG Daniel
Fürchterlich? Dann hast du noch nicht viel ...
29.01.2019 18:35:08
Luc:-?
…von mir gelesen, Daniel… :->
Deinetwegen schreibe ich hier bestimmt keine Belletristik, zumal ich nur 6 Abkürzungen verwendet habe, wovon 3 allgemein, 1 VBA-affin und 1 mathe-typisch ist.
Luc :-?
AW: Das geht nicht, ...
29.01.2019 16:23:59
Philipp
Hallo Luc,
wie kann ich das in VBA einbinden?
Philipp
Anzeige
doch das geht schon Luc
29.01.2019 16:53:06
Daniel
die Ausführung des Copy-Befehls wird bei einem diskontinuierlichen Zellbereich über mehrere Zeilen und Spalten nur dann verweigert, wenn die Anordnung der markierten Zellen ein Zusammenführen zu einem kontinuierlichen Zellbereich nicht zulässt.
Ist dies möglich, kann man den diskoninuierlichen Zellbereich sehr wohl kopieren und einfügen.
gilt zumindest für Excel 2013.
Userbild
Gruß Daniel
Genauso etwas hatte ich probiert und sofort ...
29.01.2019 18:38:07
Luc:-?
…den genannten Fehler kassiert, Daniel;
du solltest dann auch die Xl-Version mit angeben, denn unter Xl14/2010 geht das (noch) nicht!
Luc :-?
Anzeige
bei mir gehts auch unter Excel 2010
29.01.2019 20:12:30
Daniel
Deswegen kann ich keinen Irrtum meinerseits erkennen.
Gruß Daniel
Richtig, ...
30.01.2019 00:03:05
Luc:-?
…ich hatte es mit 3 diagonal verteilten Werten probiert, Daniel;
insofern ist deine ZellAnordnung schon ein ziemlicher Sonderfall absoluter Regelmäßigkeit, der gleiche Zeilen und Spalten der Werte, sowie gleiche Anzahlen pro Richtung voraussetzt. Genau das scheint aber bei Philipp nicht der Fall zu sein.
Eine einfache Zusammenfügbarkeit der Werte zu einem geschlossenen Bereich reicht also nicht. Xl und VBA behalten die grund­le­gende Zeilen-Spalten-Struktur bei, nur ohne entfallende ZwischenZeilen und -Spalten. Das scheint mir dann auch - neben symme­tri­scher Wer­te­Verteilung - das entscheidende Kriterium zu sein.
Luc :-?
Anzeige
AW: Richtig, ...
30.01.2019 00:27:46
Daniel
von jemanden, der von sich behauptet auf Hochschulniveau zu arbeiten, hätte etwas mehr wissenschaftliche Exaktheit erwartet.
Wie bitte, was soll denn nun das schon wieder?
30.01.2019 00:51:33
Luc:-?
Du bringst einen Sonderfall ins Spiel, der hier überhaupt nicht zutrifft, und erwartest dann, dass der zur Grundlage der Überprüfung einer allgemeineren Aussage mit nur vager Andeutung von Ausnahmen* gemacht wird‽ Das ist quasi „Diesel-Niveau“ (und natürlich unwissenschaftlich)!
* Die du nicht spezifiziert hast, das habe erst ich getan!
Mein Fehler bestand nur darin, deine TestAnordnung mit meiner gleichzusetzen und nicht noch einmal zu überprüfen. Anderenfalls hätte ich das zuletzt Geschriebene gleich erwähnt.
Es ist ja nett, dass du meinst, dass ich auf HS-Niveau arbeite, aber das habe ich nie behauptet, nur mich oft einigermaßen um vglbare Exaktheit bemüht. Zu einer wissenschaftlichen Arbeit gehört nämlich noch einiges mehr, was in einem Forum kaum angebracht sein dürfte.
Luc :-?
Anzeige
AW: Wie bitte, was soll denn nun das schon wieder?
30.01.2019 02:01:22
Daniel
Luc, du verwechselst da einiges.
ich meine nicht, dass du auf Hochschulniveau arbeitest, ich habe nur gelesen, dass du das von dir behauptest und erwarte dass dann natürlich auch von dir.
außeredem gehts nicht um irgendwelche Sonderfälle, sondern um die Frage, ob Excel/VBA das Kopieren von diskontinuierlichen Zellbereichen über mehrere Spalten/Zeilen generell verbietet, oder ob es prüft, ob die diskontinulierichen Bereiche kontinuierlich eingefügt werden können und wenn ja, dieses dann auch macht und die Fehlermeldung nur dann bringt, wenn es nicht möglich ist.
du warst der Ansicht, dass Excel das generell verbietet (wenn ich dich zitieren darf: "Weder Xl (wie bei manueller Auswahl festzustellen) noch VBA machen sich die Mühe, festzustellen, ob der kopierte diskontinuierliche Bereich irgendwie zusammenhängend abbildbar ist, ")
und ich hatte halt festgestellt, das Excel sich durchaus die Mühe macht, dies zu überprüfen.
damit hatte ich recht, wie mein Beispiel gezeigt hat du lagst mit deiner Ansicht falsch.
nichts weiter.
"Mein Fehler bestand nur darin, deine TestAnordnung mit meiner gleichzusetzen und nicht noch einmal zu überprüfen."
ein Fehler, den du nicht zum ersten mal machst.
Anzeige
Das ist wohl ziemlich daneben!
30.01.2019 03:01:49
Luc:-?
Ich schrieb ja irgendwie zusammenhängend abbildbar und regelmäßig diagonal angeordnete Zellen sind ja auch zusammenhängend abbildbar, INDEX* beweist das. Und du hattest ja keine Kriterien genannt, wann's geht und wann eher nicht.
Wenn du eine rein lineare StrukturAbfolgePrüfung als ausreichende Begründung empfindest, mag das ja mit den Intentionen der dama­ligen Pgmmierer übereinstimmen, ich hätte aber mehr von einer Prüfung erwartet. Allerdings wäre das für eine simple Methode wohl zuviel verlangt. Also habe ich mich hierbei an anderen Fällen orientiert, die rigoros alles irgendwie Abweichende ablehnen, unterstützt von den bei mir und Philipp auftretenden gleichen Fehlermeldungen.
* Allerdings muss/kann man dabei die Areas genau platzieren.
Du verlangst doch immer BeweisLinks von mir, ich idR aber nicht von dir. Aber da du nun angibst, ich hätte das behauptet, frage ich wo!
Und was Fehler betrifft, ich kann meine auch zugeben. Vglbares habe ich von dir noch nie gelesen*! Ich erinnere mich da bspw an die WENN-Diskussion, bei der ebenfalls unterschiedliche Ansätze zu ggteiligen Ergebnissen führten (zum Schluss waren beide Meinungen teils richtig, teils falsch).
* Einen Irrtum zuzugeben, kratzt wohl allzusehr an deinem Ego… :->
Luc :-?
Anzeige
AW: Das ist wohl ziemlich daneben!
30.01.2019 03:40:59
Daniel
HI Luc
wenn du nen Link brauchst für ne Aussage, die du erst kurz vorher im gleichen Thread getätigt hast, bitte
https://www.herber.de/forum/messages/1671928.html
dort schiebst du, dass sich "Excel keine Mühe macht, zu prüfen"
und ich habe eine konstellation gefunden, in der Excel bei diskontierlichen Bereichen das Kopieren durchführt, also muss Excel sich doch die Mühe machen, das zu prüfen, weil es bei manchen Konstellationen das Kopieren durchführt und bei manchen Konstellationen die Fehlermeldung ausgibt.
Also muss es in irgendeiner Form die Prüfung durchführen.
und um zu beweisen, dass Excel die Prüfung durchführt, muss ich nur eine konstellation finden, die keine Fehlermeldung erzeugt, sondern kopiert wird.
die Kriterien dazu muss ich nicht nennen. Dazu kann ich ja auch keine konkrete Aussage machen, denn dazu müsste ich den Code von MS kennen, bzw deren Beschlüsse, was sie diesbezüglich umsetzen wollten.
noch ne Frage: hast du alles gelesen, was ich jemals geschrieben habe?
was die Wenn-Diskussion betrifft, kann ich mich daran erinnern, dass du dich über meine Prüfmethode lustig gemacht hast, obwohl wir im Kern die gleiche Methode verwendet haben, was dir aber nicht aufgefallen ist, weil du dir nicht die Mühe gemacht hast, meinen Code genauer anzuschauen, sondern nur oberflächlich beurteilt hast.
Der unterschied im Ergebnis lag darin, dass du eine Funktion verwendet hast, die auch Einzelwerte als Array ausgegeben hat und dadurch eine Matrix-Berechnung ausgelöst hat, was aber keinem von uns bewusst war.
AW: Das ist wohl ziemlich daneben!
30.01.2019 08:15:21
Daniel
Wollt ihr euch nicht ein Hotelzimmer nehmen? Schon ulkig.
Dafür hatte es keines Links bedurft, ...
01.02.2019 13:39:08
Luc:-?
…Daniel,
deine andere andere Bemerkung war gemeint. Für die wirst du aber wohl kaum einen Beleg finden.
Aber mal wieder sachlich:
Die von dir gefundene Konstellation ist eine der Art, die offensichtlich die einzige ist, die von der Copy-Methode noch ausgeführt wird. Möglicherweise ist so etwas auch generell nicht vorgesehen gewesen — darauf deutet zumindest die rigorose Fehlermeldung in allen anderen Fällen hin — und somit ein Nebeneffekt mangelnder Zusammenarbeit zwischen den Pgmmierern verschiedener Teilbereiche, wie das ja auch bei VerbundZellen festzustellen ist, die durchaus auch MatrixFmln aufnehmen können, obwohl die Fehlermeldung sugge­riert, dass das keinesfalls möglich sei.
Auch bei Copy wäre mehr möglich, wenn der markierte diskontBereich tatsächlich ernsthaft auf Übertragbarkeit geprüft würde. Die Prüfung scheint eher oberflächlich zu sein und sich auf eine Prüfung der Wiederholung gleicher Positionen pro Zeile u/o Spalte zu beschränken. Eine einfache Sammlung der markierten Positionen nur (spalten- bzw xltypisch) zeilenweise würde im nachfolgend dargestellten Fall schon ausreichen, eine Kopie zu erstellen. INDEX hat da bei exakter Positionierung der Auswahlen keinerlei Probleme:
 ABCDEFGHIJK
1
66394573987878 66737830535949124469 7336659799464334119 706127372813876614 3359731761542099715 ↑kopiert mit INDEX↓7027456421278 6673781210036435165 72871465295552608062 706121796176895599 53603033538459607330I6:K9: {=INDEX((A1;D1;F1;B4;E4;G4;A6;D6;F6;B10;E10;G10);1;1;{1.2.3;4.5.6;7.8.9;10.11.12})}
2
3
4
5
6
7
8
9
10
Die INDEX-Fml kann als 4.Argument auch eine TeilFml enthalten, wird dann aber länger:
{=INDEX((A1;D1;F1;B4;E4;G4;A6;D6;F6;B10;E10;G10);1;1;(ZEILE(1:4)-1)*3+REST(SPALTE(A:C)-1;3)+1) }

Das zeigt am Bsp der Auswahl nur der gelb(-orangen)en bzw der (gelb-)orangenen Zellen deutlich, wie gering der Unterschied zwischen möglich und unzulässig ist. Selbst Regelmäßigkeit ist nicht hinreichend, sondern relative Positionsübereinstimmung verlangt. Dazu muss man den PgmCode nicht mal kennen, könnte diesen Effekt aber wohl auch nachpgmmieren.
Natürlich reicht es hier aus, nur eine einzige Ausnahme zu finden, um eine weitere Möglichkeit zu begründen, aber das ist letztlich beinahe zufällig, wenn man mehr oder weniger zuverlässigen Fehlermeldungen vertraut. Und mein Testfall war ja noch simpler als der hier gezeigte orangene. Allerdings hätte in beiden Fällen Xl die Wahl zwischen zeilen- oder spaltenorientierter Anordnung, was ein mögliches KonfliktPotenzial beinhaltet. In anderen Fällen präferiert Xl aber eindeutig Listen, also ZeilenOrientierung, so dass keine derartigen Probleme entstehen (wäre evtl eine Pgm-Idee!).
Der WENN-Fall war für mich ursprünglich eindeutig, da es sich um eine Fkt handelt (das VBA-Ggstück IIf fktioniert auch wie eine normale). In Xl kommt allerdings zuerst der FmlText-Interpreter ins Spiel, der dann, falls einfach möglich, das abweichende Verhalten verursacht, indem er sicher irrelevante Fml-Teile einfach auslässt. Das ist bei MatrixFmln und -Ausdrücken im Vorhinein ungewiss, weshalb dann alles berechnet wird.
Dass ich etwas noch nie gelesen habe, heißt nicht, dass es nicht doch schon mal irgendwo gestanden hätte. Meine Aussage ist also genauso subjektiv wie oft auch die deinigen.
Luc :-?
AW: Dafür hatte es keines Links bedurft, ...
01.02.2019 16:56:11
Daniel
Luc, du bist hier einfach schon einen Schritt zu weit.
zunächst geht's ja erstmal nur darum, wie Excel tatsächlich funktioniert und nicht, wie es funktionieren könnte, wenn man es sich selber wünschen dürfte, wie es funktioniert.
ich hatte in meinem ersten Beitrag ja nur geschrieben, dass es beim Kopieren und Einfügen von diskoninuierlichen Zellbereichen Anordnungen gibt, bei denen das ausgeführt wird und Anordnungen, bei denen es nicht ausgeführt wird.
mehr hatte ich ja nicht geschrieben und da es mindestens eine Anordnung, gibt, bei der es funktioniert, habe ich damit recht (und du hattest ja behauptet, ich würde irren, damit liegst du aber falsch).
klar kann man diskutieren, ob die Kriterien, die MS verwendet hat um festzulegen, ob der Zellbereich kopiert werden kann oder nicht sinnvoll sind, aber das tut zunächst einmal nichts zur Sache.
Ich würde es beispielsweise für kritisch halten, wenn plötzlich Werte in einer Zeile oder Spalte nebeneinanderstehen, die in der Ausgangstabelle in unterschiedlichen Zeilen oder Spalten stehen.
...Und ich hatte erklärt, dass EINE Ausnahme ...
06.02.2019 23:07:04
Luc:-?
…hier durchaus schon eine (Sonder-)Regel begründen kann (obwohl das rein statistisch wohl irrelevant wäre). Und somit ist die MS-FehlerMeldung in ihrer Rigorosität wieder mal irreführend. Diese Möglichkeit wird weder in der Xl- noch der VBE-Hilfe erwähnt. Man kann sie sich aber ggf erschließen, indem man sie dem Kopieren ohne ausgeblendete Zeilen u/o Spalten gleichsetzt*. Dabei entstehen ja auch zeilen- und spaltenweise gleiche KopierStrukturen. Insofern ist das wohl das verbindende Merkmal und somit doch beabsichtigt, nur nicht im Text der F-Meldung bedacht.
Tja, und natürlich hast du mit deinen Bedenken recht. Ich hatte ja auch geschrieben, dass das KonfliktPotenzial beinhaltet, obwohl Xl ja sonst eher zeilenorientiert vorgeht.
* Das scheint mir auch die einzig sinnvolle Erklärung für dieses Verhalten zu sein.
Luc :-?
und als ich auf diese Ausnahme hingewiesen habe
07.02.2019 22:48:37
Daniel
hast du behauptet ich würde irren, auch dann noch, als ich sie dir gezeigt habe.
Und ich hatte geschrieben warum, ...
09.02.2019 04:49:23
Luc:-?
…aber das ist inzwischen ja langweilend. Was willst du noch hören? Erinnert mich langsam an die Parabel vom Stichling, dem Huhn und dem Ei… :-]
Luc :-?
Was ich hören will?
09.02.2019 08:26:45
Daniel
Eine Rücknahme deiner falschen Aussagen über mich und eine Entschuldigung von dir möchte ich hören.
AW: Richtig, ...
30.01.2019 00:27:47
Daniel
von jemanden, der von sich behauptet auf Hochschulniveau zu arbeiten, hätte etwas mehr wissenschaftliche Exaktheit erwartet.
AW: Fragen zu Pastespecial Methode
29.01.2019 09:21:56
Daniel
Hi
wenn niemand anderes was cleveres findet:
1. lese Quell- und Zielbereich jeweils in ein Array ein
2. laufe mit einer Schleife über die Zeilen und Spalten (beide Arrays müssten gleich groß sein) und führe dort die entsprechende Operation durch, dh wenn beides Zahl: addieren ansonsten Wert übernehmen
3. schreibe dann das Ergebnisarray in den Zielbereich zurück
sieht als Code in etwa so aus:
dim arrK, rngK as Range
dim arrE, rngE as Range
dim z as Long, s as Long
set rngK = '... hier den Kopierbereich angeben
set rngE = '... hier den Einfügebereich angeben
arrK = rngK.Value
arrE = rngE.Value
for z = 1 to Ubound(arrK, 1)
for s = 1 To Ubound(arrK, 2)
if IsNumeric(arrK(z, s)) and IsNumeric(arrE(z, s)) Then
arrE(z, s) = arrE(z, s) + arrK(z, s)
elseIf arrK(z, s)  "" Then
arrE(z, s) = arrK(z, s)
end if
next s
next z
rngE.Value = arrE
Gruß Daniel
AW: Fragen zu Pastespecial Methode
30.01.2019 09:59:10
Philipp
Hallo Daniel,
ich habe deinen Code ausprobiert, er macht genau das was ich brauche. Danke. Noch eine Frage, beim kopieren von leeren Zellen im Bereich werden diese als Zahl Null eingefügt. Lässt sich das unterdrücken? Falls nicht kann ich auch alternativ nach den Nullen suchen und diese löschen.
Grüße,
Philipp
AW: Fragen zu Pastespecial Methode
30.01.2019 11:43:47
Daniel
Hi
wenn die kopierte Zelle leer ist, sollte der ursprüngliche Wert erhalten bleiben.
wenn was anders gewünscht ist, musst du das in dem IF-ElseIF entsprechend anpassen.
Gruß Daniel
AW: Fragen zu Pastespecial Methode
30.01.2019 12:52:01
Philipp
Hallo,
nur zum Verständnis, leer bedeutet in diesem Falle also null?
AW: Fragen zu Pastespecial Methode
30.01.2019 12:54:50
Philipp
Hallo nochmal,
könntest du mir die Codezeilen bitte erklären damit ich verstehe was gemacht wird und es ggf. an anderer Stelle anwenden kann. Danke.
AW: Fragen zu Pastespecial Methode
30.01.2019 13:13:54
Daniel
1. Was der Code grundsätzlich macht, habe ich ja bereits beschrieben.
2. VBA ist aus dem Englischen abgeleitet, dh. mit Englischgrundkenntnissen sollte zumindest mal im Ansatz erahnen können,was der jeweilige Befehl oder Funktion macht.
3. VBA hat eine Hilfefunktion. Wenn du F1 drückst, öffnet sich eine Seite mit den Erklärungen zu dem Befehl, bei dem sich gerade der Cursor.
Versuch dich mal damit durchzukämpfen. Wenn du dann spezielle Fragen hast, kannst du ja nochmal Fragen.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige