Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Umbauen in Excel

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Umbauen in Excel (1126 mal gelesen)
LedZep84
Mitglied


Sehen Sie sich das Profil von LedZep84 an!   Senden Sie eine Private Message an LedZep84  Schreiben Sie einen Gästebucheintrag für LedZep84

Beiträge: 3
Registriert: 17.01.2008

erstellt am: 17. Jan. 2008 11:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


preise.JPG

 
Ich brauche mal eure Unterstützung für ein Excel Makro.

Ich habe einen elektronischen Katalog in Excel mit folgenden Spalten: Beschreibung, Artikelnummer, Preis, Menge etc. Für mengenabhängige Preise gibt es zusätzlich die Spalten Mengenvariante1, Mengenvariante2, Mengenvariante3, Preisvariante1, Preisvariante2, Preisvariante3. Mengenvariante(x) bezieht sich auf Preisvariante(x). Mengenvariante(x) stellt die jeweilige Mengenuntergrenze dar, ab der die Preisvariante(x) gilt. Beispiel: Bei Mengenvariante1=1, Mengenvariante2=10 und Preisvariante1=20, Preisvariante2=10 würde das bedeuten, ab 1 Stück gilt der Preis 20¤ und ab 10 Stück der Preis 10¤. Ich habe das auch nochmal als Screenshot eingefügt, damit ihr seht, wie das in Excel aussieht.
Problem jetzt, es muss so unformatiert werden, dass ich für jede Mengenvariante eine extra Zeile habe. D.h. für das Beipsiel oben, müsste es die Zeile nocheinmal kopieren, da ich ja 2 Mengenvarianten habe und in der jeder Zeile den Preis in die Spalte "Preis" eintragen und die dazugehörige Mengenunterschranke die Spalte "Mengenvariante".
Ich hoffe ich hab das verständlich erklärt und ihr könnt mir weiterhelfen.

Danke und schönen Gruß.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LedZep84
Mitglied


Sehen Sie sich das Profil von LedZep84 an!   Senden Sie eine Private Message an LedZep84  Schreiben Sie einen Gästebucheintrag für LedZep84

Beiträge: 3
Registriert: 17.01.2008

erstellt am: 17. Jan. 2008 11:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


nachher.JPG

 
Hier nocheinmal ein Beispielscreenshot, wie es nachher aussehen soll.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 17. Jan. 2008 11:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für LedZep84 10 Unities + Antwort hilfreich

Hallo und Willkommen auf CAD.de!

Erlaube mir die höfliche Frage: Warum muss es ein Makro sein? Möchtest Du, das Dir jemand das Makro schreibt? Ich verweise auf mich selbst - Makrorecorder anwerfen, testen, konkret fragen .

Nimm's mir bitte nicht übel, aber Deine Frage (?) klingt schon sehr nach "macht mal bitte..."

Gruß,
Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LedZep84
Mitglied


Sehen Sie sich das Profil von LedZep84 an!   Senden Sie eine Private Message an LedZep84  Schreiben Sie einen Gästebucheintrag für LedZep84

Beiträge: 3
Registriert: 17.01.2008

erstellt am: 17. Jan. 2008 14:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ok, vielleicht hast du recht. Sorry. Das Problem ist, ich habe noch nicht viel mit VBA gemacht, also auch nicht mit Makro aufzeichnen. Nicht das ich grundsätzlich ein Problem mit dem Programmieren habe, habe schon viel in Turbo Pascal und C++ gemacht, allerdings eben nicht in VBA. Da ich keine Kenntnis der Syntax habe, kann ich dir auch nichts in VBA anbieten.
Was ich aber tun kann, ist einen Strukturplan zu erstellen. Sprich ich kann den genauen Ablauf sagen. Nur in VBA umsetzen kann ich leider nicht. Makro aufzeichnen bringt da nicht viel, da ich dort keine Schleien, Bedingungen einbauen kann.

Also das Makro müsstre folgendes tun

Das muss für jede Zeile durchlaufen werden

1. In der Zeile prüfen, ob in der Spalte Mengeneinheit1 etwas steht bzw. "1" ist (also <>0) --> wenn dies so ist, ist die Bedingungen erfüllt und wir haben Staffelpreise in dieser Zeile

2. Dann prüfen wieviele Mengenpreise, d.h. wenn die Spalte "Mengenvariante1"<>0, wiviele Spalten(n) nach rechts(Mengenvariante2, Mengenvariante3 etc) sind auch <>0

3. Die Zeile dann (n-1) mal untereinander kopieren

4. die Orginalzeile bleibt unverändert. In die kopierten Zeilen immer die entsprechenden Preise, Mengenunterschranken eintragen. Beispiel: Zeile 2 in die Spalte "Preis" die "Preisvariante2" aus der Orginalzeile eintragen und die entsprechende Mengenunterschranke in die Spalte "Mengenvariante1" kopieren.
Das für alle kopierten wiederholen. Die Mengenunterschranken stehen somit alle untereinander in der Spalte "Mengenvariante1".

5. So alle Zeilen durchlaufen und zum Schluss die Spalte "Mengenvariante1" in "Mengenvariante" umbenennen und alle Spalten die weiter rechts (Mengenvariante2, Mengenvariante3, Preisvariante1, Preisariante2....etc.) löschen.

6. Fertig.

Wie gesagt, der Ablaufplan passt soweit. Es muss eben nur umgestzt werden. Wäre deshalb schön wenn mir jemand was anbieten könnte. Muss ja nicht perfekt sein, aber ein paar Befehle und einen Ansatz wäre schon hilfreich.

Danke.


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 17. Jan. 2008 15:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für LedZep84 10 Unities + Antwort hilfreich

 
Zitat:
... da ich dort keine Schleien, Bedingungen einbauen kann
Guck' mal in den Nachbarbeitrag, was carsten-3m dazu schreibt. Mir fehlt momentan die Zeit, entschuldige.

Irgendwo solltest Du schon selbst mal anfangen, z.B. mit dem Makrorecorder. Der bringt sehr wohl was, gerade am Anfang. Es ist IMHO ein wenig dekadent zu sagen, Makro aufzeichnen bringt nix, wenn man's nicht einmal versucht hat. SCNR 

[Edit] Statt "Goodbye, Lenin": Ein paar Ansätze.

Code:
Option Explicit

Sub Einzelteile()

Dim i As Integer 'eine Variable
Dim n As Integer 'noch eine
   
'zu 1)
    If Range("B2") = "" Then        'Bedingung prüfen
        MsgBox "Zelle B2 ist leer"  'mach' was
    ElseIf Range("B2") = 0 Then    'sonst...
        MsgBox "B2 = 0"            'mach' was anderes
    End If

'zu 2)
    n = 1
    If Range("B2").Offset(0, 1) = "" Then MsgBox "Rechts von B2 steht nix."
    For i = 1 To Range("B2").CurrentRegion.Count    'End(xlToRight)
        If Range("B2").Offset(0, i) <> "" Then
            n = 1 + n
        End If
    Next i
    MsgBox n & " Spalten ab B2"
   
'zu 3)
    For i = 1 To n
        Range("B2").EntireRow.Copy
        Range("B2").Offset(i, 0).EntireRow.PasteSpecial
    Next i
    Application.CutCopyMode = False
    Range("B2").Select
   
'zu 4)
    Range("C3").Copy
    Range("D4").PasteSpecial
    Range("D5") = "Preis in D5"

'zu 5)
    Columns(4).EntireColumn.Delete

'zu 6)
    MsgBox "Erledigt", vbOKOnly + vbInformation, "Hinweis"

End Sub


[/Edit]
------------------
DIN1055.de  |  Lastannahmen für Anwender

[Diese Nachricht wurde von Paulchen am 19. Jan. 2008 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz