Office: Makro: Gleiche Werte Zusammenfassen

Helfe beim Thema Makro: Gleiche Werte Zusammenfassen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo miteinander, nach meiner letzten Kalkulation habe ich mich mal rangesetzt um mich etwas mit Makros/ VBA zu beschäftigen (bisher nur in Delphi... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von noctis, 16. Juli 2009.

  1. noctis Erfahrener User

    Makro: Gleiche Werte Zusammenfassen


    Hallo miteinander,

    nach meiner letzten Kalkulation habe ich mich mal rangesetzt um mich etwas mit Makros/ VBA zu beschäftigen (bisher nur in Delphi programmiert, aber trotz Syntax einen guten Einstieg gehabt)

    Nun habe ich folgende Problemstellung:

    2 Tabellenblätter:

    Blatt A : Rechnung
    Blatt B : Bedarf

    Bei B stehen Artikel und Preis,
    mit dem Button "Hinzufügen" wird mein Makro aktiviert und die Daten von B, in meine Tabelle in Blatt A übernommen.

    Soweit konnte ich alles umsetzen (abgesehen davon dass er die Daten nur in das aktive Blatt und nicht auf Worksheets("Rechnung") übertragen möchte). Jeder Eintrag wird auch in einer neuen Zeile generiert.

    Nun soll das Makro irgendwie erkennen, dass ich einen Bestimmten Artikel mehrmals eingefügt habe und diesen dann addieren:

    Beispiel:

    Ich klicke 2x auf "Hinzufügen", bei beiden Malen haben wir "Artikel 1" gewählt. Nun steht in der Tabelle aber nicht zwei mal "Artikel 1" untereinander, sondern nur einmal "Artikel 1", die Preise und der Bedarf in den hinteren Spalten wurde demzufolge auch zusammengerechnet.

    Also Artikel 1 = 10€ + Artikel 1 = 20€ macht in der Tabelle ein Eintrag "Artikel 1" = 30€.

    Müsste dann so funktionieren, dass er bei einem bestand von über 100 Artikeln erkennt wann dopplungen auftreten und diese dann addiert.

    Umsetzungsideen bin ich mir noch nicht schlüssig ob ich es mit If Then probiere oder mit nem Array, leider sind meine VBA kenntnisse in der hinsicht etwas unausgereift :S

    Hier mals das Makro soweit wie ich es habe

    Code:
    Sub Test()
    '
    ' Test Makro
    '
    
    '
    '    Sheets("Rechnung").Select
    
    Dim b_bedarf As Range
    Dim b_artikel As Range
    Dim b_pnetto As Range
    
    Set b_artikel = Worksheets("Bedarf").Range("B6")
    Set b_bedarf = Worksheets("Bedarf").Range("B10")
    Set b_pnetto = Worksheets("Bedarf").Range("B13")
    
    Dim neueZeile As Range, freieZeile As Integer
    Set neueZeile = Range("A25:A30").Find("")
    
    freieZeile = neueZeile.Row
    
    
    Cells(freieZeile, 1).Value = (b_artikel)
    Cells(freieZeile, 3).Value = (b_bedarf)
    Cells(freieZeile, 4).Value = (b_pnetto)
    
    
    End Sub
    

    http://www.file-upload.net/download-1766643/Makro_addieren.xlsx.html
     
    noctis, 16. Juli 2009
    #1
  2. noctis Erfahrener User
    Soo, bevor ich schlafen gehe noch das was mir gerade eingefallen ist.

    das Makro soll einfach die einträge vergleichen und bei einer dopplung nen strich aufs kerbholz machen und die werte addieren.

    Implementierung in Excel wusste ich jezt leider nicht wie ich das anstellen soll, setzte mich aber morgen/ heute mal ran.

    vilt kann ja jmd mit dem ansatz schon was anfangen, oder hat eine einfachere lösung?

    das ist jetzt delphi

    Code:
    Var
    artikel : array[1..2500] of Tlistitem;
    
    procedure Button1Click
    var
    neuerArtikel : Tlistitem;
    dopplung, j, i:integer;
    button: Integer;
    
    begin
    
    inc(anzahl)
    artikel[anzahl] :=neuerArtikel;
    
    for i:=1 to anzahl do begin
    if (artikel[i].caption = artikel[i+1].caption)
    	then inc(dopplung);
    end;
    if dopplung > 1 then
    	artikel[i].caption + doppelter eintrag
    
    end;
    
     
    noctis, 17. Juli 2009
    #2
  3. miriki Erfahrener User
    Code:
    Sub Test()
    [...]
    Set neueZeile = Range("A25:A30").Find("")
    freieZeile = neueZeile.Row
    Mit diesem Konstrukt patscht Du den Eintrag immer und grundsätzlich an das Ende der Liste. Das Herausfinden, ob der Artikel bereits vorher schon in der Liste war, muß also vorher passieren.

    Irgendwas in der Art (und das sieht in VBA eigentlich fast genauso aus, wie in Delphi):
    Code:
    i = 1
    while i < freizeile
        if cells(i,1).value = b_artikel then
            cells(i,3) = cells(i,3) + 1 'anzahl anpassen
            'cells(i,4) anpassen...
    '(ich mag kein "exit for", deswegen der etwas umständlichere weg über "while"
            i = freiezeile
        endif
        i = i + 1
    wend
    if i = freiezeile then
    'bei dopplung wäre i = freiezeile+1
        cells(freiezeile,1).value = (b_artikel) 
        cells(freiezeile,3).value = (b_bedarf) 
        cells(freiezeile,4).value = (b_pnetto)
    endif
    Ist jetzt aus'm Stegreif so hingetippselt, aber das Prinzip dürfte klar sein, oder?

    Gruß, Michael
     
    miriki, 17. Juli 2009
    #3
  4. Exl121150 Erfahrener User

    Makro: Gleiche Werte Zusammenfassen

    Hallo noctis,

    ich habe Dir VBA-Code gebastelt, der die seit Excel2007 neuen Tabellen verwendet.
    Im Blatt 'Bedarf' sind 2 Buttons enthalten:
    der 1.Button dient zum Erzeugen der Rechnungstabelle im Blatt 'Rechnung';
    der 2.Button dient zum Hinzufügen einer Artikelposition: falls der Artikel bereits existiert, werden nur die beiden Spalten 'Bedarf' und 'Gesamtpreis' entsprechend erhöht.

    Hier der Link auf die Excel2007-Datei:
    http://www.file-upload.net/download-1771911/noctis_Makro_addieren.xlsm.html
     
    Exl121150, 18. Juli 2009
    #4
Thema:

Makro: Gleiche Werte Zusammenfassen

Die Seite wird geladen...
  1. Makro: Gleiche Werte Zusammenfassen - Similar Threads - Makro Gleiche Werte

  2. Name der Datei durch Excel geändert

    in Microsoft Excel Hilfe
    Name der Datei durch Excel geändert: Hallo und guten Abend, Die Datei wird mittels Button (VBA) zwischen gesichert. Das Makro sichert zuvor die Datei und erstellt zus. eine Sicherungsdatei mit der Erweiterung Beispiel-"Sich"....
  3. Ein Makro für mehrere Register

    in Microsoft Excel Hilfe
    Ein Makro für mehrere Register: Moin, ich habe ein Makro wo Daten aus dem Register Master kopiert werden und Register, das mit einem Datum beschriftet ist. Ich möchte in Jedem Register ein Button haben was Daten aus dem Master...
  4. Makro öffnet unerwartete Datei

    in Microsoft Excel Hilfe
    Makro öffnet unerwartete Datei: Hallo Forum, ich brächte euer Schwarmwissen. Arbeite mit Excel eine Auftragsbearbeitung. Dort habe ich mir einen Button mit Makro erstellt und nutze diesen schon lange. Das Makro generiert ein...
  5. Leerzeilen entfernen

    in Microsoft Word Hilfe
    Leerzeilen entfernen: Hallo in die Runde, ich habe das Problem bzw. den Wunsch in einem DOC die Leerzeilen zu entfernen und das per Makro. Allerdings gelingt es nicht Hintergrund das DOC wird aus einer Dot-Datei...
  6. Outlook 2016, immer gleichen stoerenden Textblock per Makro loeschen

    in Microsoft Outlook Hilfe
    Outlook 2016, immer gleichen stoerenden Textblock per Makro loeschen: Hallo Experten, unser Firmenserver ist leider so eingestellt, dass jede externe Mail mit folgendem oben ueber der Anrede einkopierten Textblock angezeigt wird: ACHTUNG: Diese Mail kommt von...
  7. Makro für gleiche Ausgangswerte, unterschiedliche Zielzelle

    in Microsoft Excel Hilfe
    Makro für gleiche Ausgangswerte, unterschiedliche Zielzelle: Schönen Guten Tag, ich bin neu hier im Forum und hoffe, dass mir jemand bei meinem Excel-Leiden helfen kann. Ich habe folgendes Makro Problem. In die Zeile 1 und 2 gebe ich Zahlenwerte ein....
  8. Makro TTest gleiche Varianzen

    in Microsoft Excel Hilfe
    Makro TTest gleiche Varianzen: Hallo, ich habe ein Problem damit Makros für TTests zu erstellen und zwar meine ich die TTest, welche man erst mit dem Addin "Datenanalyse" zur Verfügung stehen. Wenn ich mir dann ein Makro...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden