Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellenwerte per VBA doppelt untereinander kopieren

Zellenwerte per VBA doppelt untereinander kopieren
25.10.2013 18:22:52
mck
Hallo zusammen,
folgender Sachverhalt:
ich würde gerne die Zellen einer bestehenden Spalte (A1:A201) mit darin enthaltenen Zahlenwerten (-50 bis 150) kopieren und jeweils zweimal untereinander in einem neuen Tabellenblatt in Spalte (A1:A401) darstellen.
in etwa so:
A....A
-50...-50
-49...-50
-48...-49
-47...-49
-46...-48
-45...-48
.
.
.
150...150
...150
Außerdem sollte die Funktion alle Zwischenwerte mit 0,5er Schritten berechnen. Dabei soll zusätzlich der erste Wert der Spalte (-50) um 0,5 verringert werden (von -50 auf -50,5) und der höchste Wert um 0,5 erhöht (von 150 auf 150,5).
in etwa so:
A1....A1
-50...-50,5
-50...-49,5
-49...-49,5
-49...-48,5
-48...-48,5
-48...-47,5
-47...-47,5
-47...-46,5
.
.
.
150...149,5
150...150,5
Ziel ist die korrekte Darstellung bestehender Datensätze als Stufendiagramm.
Ich hoffe ihr könnt mir weiterhelfen. Mit den Excel-internen Funktionen bekomme ich das hin, leider gelingt mir es im VBA nicht.
Vielen dank schon im Voraus für eure Hilfe.
Grüße mck

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellenwerte per VBA doppelt untereinander kopieren
25.10.2013 19:40:36
Firmus
Hi mck,
so sollte der Ergebnis entstehen.
Fenster auf ein leeres Blatt stellen und Marko im Editor aufrufen (F5, oder F8 für Debug)
Option Explicit
Sub ober_unter_grenzen()
Dim i, von  As Long
von = -50
For i = 1 To 401 Step 2
Cells(i + 5, 1).value = von
Cells(i + 5, 2).value = von - 0.5
Cells(i + 6, 1).value = von
Cells(i + 6, 2).value = von + 0.5
von = von + 1
Next i
End Sub
Gruss,
Firmus

AW: Zellenwerte per VBA doppelt untereinander kopieren
25.10.2013 20:20:19
mck
Hallo Firmus,
vielen Dank für deine schnelle Antwort. Das Ergebnis entspricht genau dem, was ich gesucht habe. Super. Leider kann ich diesen Umweg (also das Generieren von Daten) nicht verwenden.
Mein gegebenes Beispiel war nur ein Beispiel-Datensatz. Ich bin gezwungen, eine bestehende Spalte, in welcher tatsächlich die Werte von -50 bis 150 eingetragen sind, zu "kopieren" und dabei jede Zelle zu verdoppeln. (Die Bildung von Zwischenschritten (0,5-Schritte) benötige ich nur für die erste Spalte (von -50 bis 150).
Zusätzlich muss ich das entstehende Ergebnis in der 1. Zelle!! der neu entstehenden Spalte eintragen, was später für eine korrekte Weiterverarbeitung wichtig ist.
Außer dem obigen Beispielzahlen werden noch weitere Datensätze hinzukommen welche ich ebenfalls verdoppeln muss:
so in etwa...
A............A
0............0
0............0
1234.........0
44...........0
55,76.....1234
0,98765...1234
2...........44
0,1.........44
567......55,76
123......55,76
usw...
Vielleicht hast du hierfür auch eine Idee...?
Einen schönen Abend,
Gruß mck

Anzeige
AW: Zellenwerte per VBA doppelt untereinander kopieren
25.10.2013 22:53:12
Firmus
Hi mck,
ein paar Fragen zum besseren Verständnis zu Deinem Ersten Beitrag:
...untereinander in einem neuen Tabellenblatt in Spalte (A1:A401) darstellen
müsste eigentlich heissen:
...untereinander in einem neuen Tabellenblatt in Spalte A (A1:A201 + A202:A402) darstellen
...
werden (von -50 auf -50,5) und der höchste Wert um 0,5 erhöht (von 150 auf 150,5).
Fall-1: bei -50 kann ich -0,5 addieren, dann erhalten ich -50,5
Fall-2. bei 150 kann ich 0,5 addieren, dann erhalte ich 150,5
Regel-1: ...der erste Wert der Spalte (-50) um 0,5 verringert werden ...
Es muss eine zweite Regel geben, neben der Regel-1, denn wenn ich für Fall-2 auch Regel-1 anwende, dann
erhalte ich 149,5 ?
Ich habe eine zweite Regel angewandt: 0,5 auf den Wert addieren (zweiter zeile des gleichen Ausgangswert)
Dein zweiter Beitrag hier:
(Die Bildung von Zwischenschritten (0,5-Schritte) benötige ich nur für die erste Spalte (von -50 bis 150).
Die Werte -50 bis 150 stehen nicht in verschiedenen Spalten sondern in verschiedenen Zeilen!
Wird die Berechnung nur für 1-201 (gemäß Orignalblatt) oder für alle Zeilen im Blatt Kopie benötigt?
nochmals: benötige ich nur für die erste Spalte (von -50 bis 150).
Zeilen oder Spalten? Vermutlich nur für Zeilen 1-201. Dann stimmt aber Dein Muster mit jeweils zweimal
der gleichen Zahl untereinander nicht.
...
Ich habe die Zeilen nach dem Kopieren sortiert, damit das Ergebnis so aussieht wie in Deinem Muster.
"das entstehende Ergebnis in der 1. Zelle!! der neu entstehenden Spalte eintragen"
Das verstehe ich nicht.
Es entstehen 201 oder 402 Ergebnisse, aber nicht nur eines.
In der ersten ZELLE hat nur ein Wert Platz.
(Man kann die 201/402 Ergebnisse verketten und in die erste Zelle stellen. Ich glaube nicht, dass dies gewünscht ist.)
SORRY, aber "so in etwa ......." bedürfen näherer Erläuterung, das habe ich überhaupt nicht kapiert.
Noch eine Bitte. Benutze bitte die hochgeladene xlsfile falls noch weitere Erörterungen und Abänderungen nötig sind. Es arbeitet sich einfach leichter, wenn man schon mal ein gesichertes Gerüst (formales Excel) als Grundlage hat.
Hier mein Ergebnis: https://www.herber.de/bbs/user/87813.xlsm
Gruß
Firmus

Anzeige
AW: Zellenwerte per VBA doppelt untereinander kopieren
27.10.2013 17:16:50
mck
Hi Firmus,
erst mal vielen Dank für deine Hilfe!
'--------------------
...untereinander in einem neuen Tabellenblatt in Spalte (A1:A401) darstellen
müsste eigentlich heissen:
...untereinander in einem neuen Tabellenblatt in Spalte A (A1:A201 + A202:A402) darstellen

Richtig! da habe ich mich um 1 verzählt, die Werte gehen natürlich bis A402.
'--------------------
werden (von -50 auf -50,5) und der höchste Wert um 0,5 erhöht (von 150 auf 150,5).
Fall-1: bei -50 kann ich -0,5 addieren, dann erhalten ich -50,5
Fall-2. bei 150 kann ich 0,5 addieren, dann erhalte ich 150,5
Regel-1: ...der erste Wert der Spalte (-50) um 0,5 verringert werden ...
Es muss eine zweite Regel geben, neben der Regel-1, denn wenn ich für Fall-2 auch Regel-1 anwende, dann
erhalte ich 149,5 ?
Ich habe eine zweite Regel angewandt: 0,5 auf den Wert addieren (zweiter zeile des gleichen Ausgangswert)

Auch das stimmt. ich kann nicht zweimal die gleiche Operation verwenden. einmal möchte ich sozusagen meinen Wertebereich nach unten erweitern ( um 0,5) und einmal nach oben ( um 0,5).
'--------------------
nochmals: benötige ich nur für die erste Spalte (von -50 bis 150).
Zeilen oder Spalten? Vermutlich nur für Zeilen 1-201. Dann stimmt aber Dein Muster mit jeweils zweimal
der gleichen Zahl untereinander nicht.

Für ein besseres Verständnis:
Es existiert ein Tabellenblatt wo bereits die erste Spalte und die zweite Spalte A und B ab der ersten Zeile mit insgesamt 200 Werten befüllt ist.
Spalte A mit den Werten -50 bis 150, was meiner ursprünglichen x-Achse im Diagramm entspricht.
Spalte B mit 200 NULLEN als Platzhalter, für den Fall, dass ich keinen Datensatz habe, der im Diagramm dargestellt wird, mir aber trotzdem der Zeichnungsbereich weiterhin angezeigt wird.
Nun werden, je nach Anwendung die nächsten Spalten C bis Q nacheinander mit Daten (Integer und Double) befüllt, welche maximal 200 Werte besitzen können. (deshalb von -50 bis 150)
Da ich meine aktuelle Darstellung der Daten als Stufendiagramm benötige, muss ich also zu jedem x-Achsen-Wert zwei y-Achsen-Werte bilden. Zusätzlich brauche ich dazu die Zwischenschritte (0,5 Werte) meiner ursprünglichen 200 ganzzahligen Werte.
Damit ich später meine x-Achse so formatieren kann dass auf jeden Fall immer ein ganzer Wert vor und nach dem angezeigten Kurvenwert liegt, brauche ich einmal die Erweiterung nach oben und unten.
'--------------------
Dein Excel-file zeigt mir für die späteren x-Achsenwerte exakt das Ergebnis welches ich brauche!
Spalte B mit den Werten von -50,5 bis 150,5
Allerdings kann ich auch die verwendete Sortierfunktion nicht für meine Datensätze nutzen da diese nicht aufsteigend oder absteigend sind.
Zum besseren Verständnis habe ich in deinem Excel-file ein paar Beispiel-Datensätze in die Spalten C-E eingefügt. Außerdem habe ich das benötigte Ergebnis im Tabellenblatt "Kopie" eingetragen.
'--------------------
"das entstehende Ergebnis in der 1. Zelle!! der neu entstehenden Spalte eintragen"
Das verstehe ich nicht.
Es entstehen 201 oder 402 Ergebnisse, aber nicht nur eines.
In der ersten ZELLE hat nur ein Wert Platz.
(Man kann die 201/402 Ergebnisse verketten und in die erste Zelle stellen. Ich glaube nicht, dass dies gewünscht ist.)

damit meinte ich dass meine neuen 400 Werte jeweils in der ersten Zeile der entsprechenden Spalte beginnen müssen und nicht erst z.B in der 6. Zeile...damit diese später richtig im Diagramm eingefügt werden können.
'--------------------
Hier findest du den link zum xls-file.
Ich habe den VBA-Code ein wenig geändert damit das Zieldatenblatt: "Kopie" dem entspricht, wie es später aussehen soll...
https://www.herber.de/bbs/user/87837.xlsm
Vielen Dank und schöne Grüße!!!
mck

Anzeige
AW: Zellenwerte per VBA doppelt untereinander kopieren
28.10.2013 17:27:09
Firmus
Hi mck,
ich denke jetzt habe ich Deine Problemstellung besser verstanden.
Schau Dir einfach mal das Ergebnis an.
https://www.herber.de/bbs/user/87849.xlsm
War's das?
Gruß
Firmus

AW: Zellenwerte per VBA doppelt untereinander kopieren
30.10.2013 19:10:45
mck
Hallo Firmus,
leider habe ich es zeitlich bisher nicht geschafft, Dir zu antworten.
Vielen Dank für Deine Hilfe.
Das überarbeitete Excel-File hat mir sehr geholfen. Mit Deiner Hilfe konnte ich meine Funktion so umschreiben dass diese wie gewünscht die Werte in der richtigen Reihenfolge in die entsprechenden Spalten schreibt.
Ein super Forum hier!!!
Einen schönen Abend und viele Grüße,
mck
Anzeige

326 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige