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

VBA 0 hinzufügen + Formatierung?

VBA 0 hinzufügen + Formatierung?
22.07.2021 09:06:28
LeRayZ
Guten Morgen,
ich bin ein Neuling was VBA angeht, habe jedoch in den letzten Tagen etwas kleines zusammengestellt.
Ich versuche mal den Hintergrund zu erläutern.
Ich ziehe mir die Daten aus dem Blatt ,,RohdatenKontrolle".
In Schritt 1 vom Makro, kopiere ich mir nur die für mich relevanten Daten ins das Blatt ,,BenötigtenDaten".
Hier bräuchte ich schon Hilfe.
Aus dem Blatt ,,RohdatenKontrolle" zieht er sich unter anderem Spalte AB und AJ, bei diesen Zahlen soll am Anfang eine 0 hinzugefügt werden, sodass aus 30475 = 030475 wird.
Außerdem zieht er sich Spalte AN eine HC-NR. Diese wird als Exponentialzahl angezeigt, wenn man in die Zelle geht, steht dort jedoch die richtige Zahl. Diese Zahl soll auch bitte angezeigt werden.
Wenn ich die Zelle als Text formatiere passiert erst was, wenn ich in die Zelle gehe und nochmal Enter klicke...
Bei Schritt 3 vom Makro würde ich auch noch gerne eine kleine Änderung vornehmen.
Es wäre klasse, wenn er die Kopierten Zeilen direkt nach dem Einfügen löscht.
Ich hab es mit .Cut anstatt .Copy versucht, jedoch ohne Erfolg.
Ist es außerdem möglich, dass er auf dem Blatt ,,SortiertenDaten" in Spalte H immer den prozentualen Anteil von allen in Spalte G enthaltenen Werten anzeigt?
Beispiel in einer Formel wäre hier: =G/(SummeG$2$:G$3$), sodass bei beiden 50% steht.
https://www.herber.de/bbs/user/147238.xlsm
Ich wäre wirklich dankbar für eure Hilfe und falls die Zeit da ist hinter den Makros ein Kommentar zu lassen, damit ich das mir selber aneignen kann, wäre das mega!

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA 0 hinzufügen + Formatierung?
22.07.2021 23:20:00
Yal
Hallo LeRay,
Du kopierst eigentlich alles. Also könntest Du gleich das Blatt "RohdatenKontrolle" duplizieren:

Sub Worksheet_duplizieren()
Const cQuelle = "RohdatenKontrolle"
Const cZiel = "BenötigteDaten"
On Error Resume Next 'Falls cZiel nicht existiert, verursacht Delete eine Fehler
Worksheets(cZiel).Delete
Worksheets(cQuelle).Copy After:=Worksheets(Sheets.Count)
ActiveSheet.Name = cZiel
End Sub
Löschen von Spalten (oder Zeilen) ist wie Bodenwischen: immer zurück zur Tür. Also am Ende anfangen. Den "N:N" ist nur "N:N" nach dem Löschen von "A:A", "C:Y", usw. Ändert sich ein davon, muss die ganze Kette neu definiert werden. Löscht man zuerst die 56te Spalte, ist die Spalte 54 immer noch die 54te Spalte.
Mit einem For Each auf eine Liste (Array) kann man den Code kompakter gestalten:

Sub Spalten_löschen()
Dim C
For Each C In Array("A", "C:Y", "F", "H", "K", "L", "M", "N")
Worksheets("BenötigtenDaten").Columns(C).Delete
Next
End Sub
"zurück zur Tür" kann man auch als Liste übergeben: Array ( "BX", "BU", "BS", ...)
Exponentielle Format: Format müsste vor derm Einfügen von Wert festgelegt werden. Dann nur Wert einfügen. Durch duplizieren des Blattes sollte das Problem nicht mehr vorhanden sein.
Löschen von originale Zeile: Wenn es tatsächlich nur um die ersten 30 Zeilen geht, dann im Ziel-Blatt ab Zeile 31 und in Quelle Zeile 2:30 löschen

Sub Zeile_löschen()
Worksheets("BenötigteDaten").Rows("31:99999").Delete
Worksheets("RohdatenKontrolle").Rows("2:30").Delete
End Sub
Summen: unter Makro-Rekorder machen und Code anpassen. Formel in Zeile 5 sollte so aussehen (bei 30 Zeilen)
=G5/Summe($G$2:$G$30)
Sollte ungefähr so aussehen (nach Anpassung der unnötige "Select" und "Activate"):

Sub ProzentFormel_einfügen()
With Worksheets("BenötigteDaten").Range("H2:H30")
.NumberFormat = "0.00%"
.FormulaR1C1 = "=RC[-1]/SUM(R2C6:R30C6)"
End With
End Sub
VG
Yal
Anzeige
AW: VBA 0 hinzufügen + Formatierung?
23.07.2021 08:06:46
LeRayZ
Hallo Yal,
vielen Dank für die Antwort.
Jedoch habe ich noch einige Fragen.

Sub Worksheet_duplizieren()
Const cQuelle = "RohdatenKontrolle"
Const cZiel = "BenötigteDaten"
On Error Resume Next 'Falls cZiel nicht existiert, verursacht Delete eine Fehler
Worksheets(cZiel).Delete
Worksheets(cQuelle).Copy After:=Worksheets(Sheets.Count)
ActiveSheet.Name = cZiel
End Sub
Kann ich hierfür noch einstellen, dass das Blatt an zweiter Stelle steht, also zwischen ,,RohdatenKontrolle" und ,,SortiertenDaten"?
Das mit den Spalten löschen ist auch cool zu sehen, dass man es auch kurz fassen kann.

Exponentielle Format: Format müsste vor derm Einfügen von Wert festgelegt werden. Dann nur Wert einfügen. Durch duplizieren des Blattes sollte das Problem nicht mehr vorhanden sein.
Hiermit bin ich leider nicht weitergekommen, wenn ich das richtig verstanden habe ich die Quelle als Text formatiert, ich habe die Spalte AN aus meiner Datei als Text formatiert und habe dann die Daten aus der Quelle nur mit Werten eingefügt, daraufhin habe ich dein Makro zum duplizieren benutzt, jedoch muss ich immer noch einmal in die Zelle klicken und Enter drücken, damit wirklich die Zahl angezeigt wird.

Löschen von originale Zeile: Wenn es tatsächlich nur um die ersten 30 Zeilen geht, dann im Ziel-Blatt ab Zeile 31 und in Quelle Zeile 2:30 löschen
Hier hast du das falsch verstanden. Ich möchte nicht die originalen Daten löschen, sondern die Daten die im Sub ErzeugnisseZuordnen() kopiert und eingefügt werden.
Anzeige

161 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige