1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Verschiedene Dinge in 1 Formel unterbringen

Discussion in 'Office-Programme' started by yoyo46, Oct 3, 2008.

Thread Status:
Not open for further replies.
  1. yoyo46

    yoyo46 ROM

    Hallo, ich habe das Problem, dass ich bei mehreren Preislistenblättern (alle in einer Datei hinterlegt) eine pauschale Preiserhöhung machen muss, die Werte aufrunden auf 9 am Ende, die Leerzellen sollen auch leer bleiben ohne Fehleranzeigen, und andere Texte, die keine Preise sind, auch als solche darstellen. Geht das in einer einzigen Formel zu machen? Ich habe einige Dinge ausprobiert in verschiedenen Arbeitsgängen, aber besser wäre es vielleicht, alles in einer Formel unterzubringen.
    Leider kann ich meine Excel-datei nicht anhängen.
    Wer kann mir helfen, das Problem zu lösen?
    Ich hoffe auf baldige Antworten. Danke schon jetzt dafür.
     
  2. Urs2

    Urs2 Megabyte

    Hallo yoyo,

    Ohne Hilfsspalten und Nacharbeit von Hand wird das kaum gehen, dann kannst Du auch gleich ein Makro verwenden.

    Meine Annahmen:
    - die Preiserhöhung ist prozentual (im Beispiel 12%)
    - es sind Preise in der Form EUR 7.69 und die letzte Cent-Stelle wird auf 9 gerundet, also 7.69 > 8.61 >> 8.69

    Kopiere das Makro im VisualBasic-Editor in Deiner Datei unter "Diese Arbeitsmappe".
    Code:
    Option Explicit
    
    Sub PreisErhoehen()
    
    Dim oldPreis
    Dim newPreis
    
    Do
        oldPreis = ActiveCell.Value
        
        If IsNumeric(oldPreis) = True And oldPreis <> "" Then
                    'erhöht den Preis um 12% und rundet auf zwei Stellen
            newPreis = Format(Round(oldPreis * 1.12, 2), "#######0.00")
                    'wenn letzte Stelle keine 9 > ändert in 9
            If Right(newPreis, 1) <> 9 Then
                newPreis = Left(newPreis, Len(newPreis) - 1) & 9
            End If
            ActiveCell.Value = newPreis
        End If
    
        If ActiveCell.Row = 1 Then Exit Do
        ActiveCell.Offset(-1, 0).Select
    Loop
    
    End Sub
    
    Funktion:
    - Leerzellen und Textzellen werden belassen wie sie sind, alle Zahlen werden um den Prozentsatz erhöht.

    - Zuerst den Fokus im Excelblatt auf die unterste Zelle in der Spalte mit den Preisen setzen
    - Da das wohl eine einmalige Sache ist, startest Du das Makro dann am besten gleich aus dem geöffneten VB-Editor > dort Mauszeiger mitten ins Makro setzen und oben das Dreieck-Symbol "Ausführen" drücken

    Probiere es an einer Kopie aus und ändere es für Deine wirklichen Bedürfnisse.

    Gruss Urs
     
  3. Hascheff

    Hascheff Moderator

    Du führst eine Aktualisierungsabfrage aus, Problem gelöst. Die Formel der Aktualisierungsabfrage entspricht in etwa Urs' Formel.
     
  4. yoyo46

    yoyo46 ROM

    Hallo Urs,

    erstmal besten Dank für deine Antwort. Konnte mich leider wegen einem
    Todesfall in der Familie nicht früher melden.
    Leider habe ich von Makros und vom VB-Editor gar keine Ahnung und weiß
    deshalb nicht, ob das für mich richtig ist. Wie kopiere ich das Makro im
    VB-Editor? Wo ist das? Bitte antworten.
    Grüße yoyo46
     
  5. Urs2

    Urs2 Megabyte

    Ich benutze Excel2003, dort kann man es so machen (sonst wohl nur kleine Abweichungen) >>>

    - Mache eine Kopie der XLS für die Tests... und öffne sie
    - Rechtsclick auf ein Arbeitsblatt-Tab >>> "Code anzeigen"
    - Jetzt öffnet der VB-Editor mit der richtigen Datei im Fokus
    - Darin Doppelclick auf Verzeichnis "Diese Arbeitsmappe"
    - jetzt mit Kopieren/Einfügen meinen gesamten Code aus Beitrag2 dort ins leere Fenster einfügen

    - in dieser Zeile >>> newPreis = Format(Round(oldPreis * 1.12, 2), "#######0.00")
    > musst Du die Zahl 1.12 an den effektiven, prozentualen Aufschlag anpassen, also mit +7.3% wäre sie dann 1.073

    ...und weiter wie in Beitrag2 beschrieben...

    Gruss Urs
     
Thread Status:
Not open for further replies.

Share This Page