online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Marvin123 vom 26.08.2020, 09:56 Options

Excel-Makro

hallo
ich bräuchte hilfe bei einem Makro in Excel
eine Schleife soll eine Spalte durchlaufen und bei allen gleichnahmigen Zellen, Werte addieren. Die Werte befinden sich eine Spalte weiter links

zB

| Spalte 1 | Spalte 2 |
| 4 | Name 1 |
| 2 | Name 3 |
| 3 | Name 1 |
| 1 | Name 2 |
also

Name 1 = 7
Name 2 = 1
Name 3 = 2

die ergebnisse am Besten in eine neue Tabelle in der selben Datei schreiben

Wäre für jegliche Hilfe dankbar


Antwort schreiben

Antwort 1 von Saarbauer vom 26.08.2020, 10:26 Options

Hallo,

wäre ohne Makro mit Summewenn() zu machen

Gruß

Helmut

Antwort 2 von finger59 vom 26.08.2020, 10:30 Options

Hallo,

falls es nicht unbedingt ein Makro sein soll, so wäre das zusammenzählen auch eine Sache, die man über die Pivottabelle lösen und in einem zweiten Tabellenblatt abbilden
könnte.

Sollte sich dann später noch Werte ändern, so kann man über aktualisieren die Datenwerte entsprechend anpassen.

In diesem Sinne... have a nice Day.... Gruß Helmut

Antwort 3 von Marvin123 vom 26.08.2020, 10:32 Options

Danke schonmal für die Hilfestellung, aber wie müsste dieses SumIf denn aussehen?
Bei Values kommen die Werte rein, aber wie sag ich dem, dass er nur die gleichen zusammenzählen soll?

Gruß

Antwort 4 von finger59 vom 26.08.2020, 10:41 Options

Hallo,

die Funktion summewenn habe ich deswegen nicht vorgeschlagen, da man jeden Suchwert einzeln vorgeben muss.

Der Formelaufbau für Summewenn wäre:
=summewenn(a1:b4;"Name 1";a1:a4)

Alternativ könnte natürlich auch statt "Name 1" b1 stehen.

In diesem Sinne... have a nice Day.... Gruß Helmut

Antwort 5 von Marvin123 vom 26.08.2020, 10:47 Options

Ok dann kommt sumwenn nicht infrage, da ich nicht alle Werte kenne die in Spalte 2 stehen können. Ich würde die Problemstellung gerne mit einem Klick lösen können, deshalb wollte ich ursprünglich ein Makro.
Was ist eine pivot Tabelle eigentlich?
Hatte mit sowas noch nie zu tun.

Gruß

Antwort 6 von finger59 vom 26.08.2020, 10:48 Options

upps...

noch eine Korrektur zu der Aussage mit dem Summewenn...
Der Suchbegriff muss links und der Wert rechts stehen!

In diesem Sinne... have a nice Day... Gruß Helmut

Antwort 7 von finger59 vom 26.08.2020, 11:03 Options

Hallo,

da die Erklärung einer Pivottabelle hier zu aufwändig wäre, habe ich Dir mal einen Link eingefügt, der den Aufbau einer Pivottabelle beschreibt.

http://www.diesoftwareagentur.de/Microsoft/Office2003/Excel/Pivot-T...

Am Anfang sieht das viel und erschreckend aus, aber wenn man sich mal eingearbeitet hat, ist es eine feine Sache.

In diesem Sinne... have a nice Day... Gruß Helmut

Antwort 8 von Marvin123 vom 26.08.2020, 11:47 Options

Pivot tabellen sehen ziehmlich praktisch aus aber für diese Aufgabe wohl eher ungeeignet, da ich immer wieder Excel Datein aus einem anderem Programm ausgespuckt bekomme. Deshalb hätte ich am liebsten ein Makro, nur ich weiß eben noch nicht genau wie, da ich mit VB-Code unerfahren bin.
Meine Idee wäre es ja Spalte 2, Zeile für Zeile auszulesen und den Inhalt in ein Array zu speichern, die Werte werden in ein zweites Array gespeichert. Wenn ein Eintrag schon vorhanden ist wird der Wert einfach mit dem bereits vorhandenem addiert(Hier muss man aufpassen den richten bereits gespeicherten Wert zu treffen)

Nur leider hab ich keine Ahnung wie das in VB aussehen sollte...

Gruß und Danke an Alle, die mir bisher zu helfen versuchten

Antwort 9 von Marvin123 vom 26.08.2020, 12:59 Options

Falls das nicht realisierbar ist, bitte mir mitteilen

Gruß

Antwort 10 von Marvin123 vom 27.08.2020, 08:23 Options

Da mir wohl niemand helfen will/kann, hab ich mal mit Hilfe des Internets was versucht
Sub chart()

Dim search As String
Dim found As Range
Dim length, count, num As Long
Dim address As String

Application.ScreenUpdating = False

length = Worksheets("load_table").UsedRange.Rows.count

For count = 10 To length
    'if() Then
        search = Worksheets("load_table").Cells(count, 11)
        
        With Worksheets("load_table").Range("K1:K" & length)
            Set found = .find(What:=search, LookIn:=xlValues)
            
            If Not found Is Nothing Then
                num = Sheets("load_table").Cells(found.Row, 10)
                Sheets("load_table").Cells(found.Row, 11).Copy
                Sheets("chart").Cells(Sheets("chart").Range("A65536").End(xlUp). _
                Offset(1, 0).Row, 1).PasteSpecial Paste:=xlValues, _
                Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                
                Do
                    Set found = .FindNext(found)
                    num = num + Sheets("load_table").Cells(found.Row, 10)
                Loop While Not found Is Nothing And found.address <> found.address
            Sheets("chart").Cells(Sheets("chart").Range("B65536").End(xlUp). _
            Offset(1, 0).Row, 2) = num
            End If
        End With
    'End If
Next
End Sub



Funktioniert leider noch nicht richtig und ich brauche noch eine if bedingung das er Duplikate nicht erneut anzeigt.

Bitte helfen
Gruß

Antwort 11 von Marvin123 vom 27.08.2020, 08:57 Options

Sub chart()

Dim search As String
Dim found As Range
Dim length, count, num, fistfound As Long
Dim address As String

Application.ScreenUpdating = False

length = Worksheets("load_table").UsedRange.Rows.count

For count = 10 To length
    'if() Then
        search = Worksheets("load_table").Cells(count, 11)
        
        With Worksheets("load_table").Range("K1:K" & length)
            Set found = .find(What:=search, LookIn:=xlValues)
            
            If Not found Is Nothing Then
                num = Sheets("load_table").Cells(found.Row, 10)
                Sheets("load_table").Cells(found.Row, 11).Copy
                Sheets("chart").Cells(Sheets("chart").Range("A65536").End(xlUp). _
                Offset(1, 0).Row, 1).PasteSpecial Paste:=xlValues, _
                Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                firstfound = found.address
                Do
                    Set found = .FindNext(found)
                    num = num + Sheets("load_table").Cells(found.Row, 10)
                Loop While Not found Is Nothing And found.address <> firstfound
            Sheets("chart").Cells(Sheets("chart").Range("B65536").End(xlUp). _
            Offset(1, 0).Row, 2) = num
            End If
        End With
    'End If
Next
End Sub


blöder Fehler, jetzt funktioniert es und es fehlt nurnoch die Bedingung das er nicht immer alle Duplikate extra bearbeitet

Antwort 12 von Marvin123 vom 27.08.2020, 09:10 Options

Sub chart()

Dim search As String
Dim found As Range
Dim length, length2, count, num, fistfound As Long
Dim address As String

Application.ScreenUpdating = False

length = Worksheets("load_table").UsedRange.Rows.count
length2 = Worksheets("chart").UsedRange.Rows.count

For count = 10 To length
    search = Worksheets("load_table").Cells(count, 11)
    With Worksheets("chart").Range("A1:A" & length2)
        Set found = .find(What:=search, LookIn:=xlValues)
    End With
    If found Is Nothing Then
        search = Worksheets("load_table").Cells(count, 11)
        With Worksheets("load_table").Range("K1:K" & length)
            Set found = .find(What:=search, LookIn:=xlValues)
            
            If Not found Is Nothing Then
                num = Sheets("load_table").Cells(found.Row, 10)
                Sheets("load_table").Cells(found.Row, 11).Copy
                Sheets("chart").Cells(Sheets("chart").Range("A65536").End(xlUp). _
                Offset(1, 0).Row, 1).PasteSpecial Paste:=xlValues, _
                Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                firstfound = found.address
                Do
                    Set found = .FindNext(found)
                    num = num + Sheets("load_table").Cells(found.Row, 10)
                Loop While Not found Is Nothing And found.address <> firstfound
            Sheets("chart").Cells(Sheets("chart").Range("B65536").End(xlUp). _
            Offset(1, 0).Row, 2) = num
            End If
        End With
    End If
length2 = Worksheets("chart").UsedRange.Rows.count
Next
End Sub



so bin fertig
jetzt bräuchte ich noch eine kleine erweiterung der mir von den werten in Tabellenblatt "chart" ein Balkendiagramm erstellt.

Antwort 13 von Marvin123 vom 27.08.2020, 09:18 Options

Sub chart()

Dim search As String
Dim found As Range
Dim length, length2, count, num, fistfound As Long
Dim address As String

Application.ScreenUpdating = False

length = Worksheets("load_table").UsedRange.Rows.count
length2 = Worksheets("chart").UsedRange.Rows.count

For count = 10 To length
    search = Worksheets("load_table").Cells(count, 11)
    With Worksheets("chart").Range("A1:A" & length2)
        Set found = .find(What:=search, LookIn:=xlValues)
    End With
    If found Is Nothing Then
        search = Worksheets("load_table").Cells(count, 11)
        With Worksheets("load_table").Range("K1:K" & length)
            Set found = .find(What:=search, LookIn:=xlValues)
            
            If Not found Is Nothing Then
                num = Sheets("load_table").Cells(found.Row, 10)
                Sheets("load_table").Cells(found.Row, 11).Copy
                Sheets("chart").Cells(Sheets("chart").Range("A65536").End(xlUp). _
                Offset(1, 0).Row, 1).PasteSpecial Paste:=xlValues, _
                Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                firstfound = found.address
                Do
                    Set found = .FindNext(found)
                    num = num + Sheets("load_table").Cells(found.Row, 10)
                Loop While Not found Is Nothing And found.address <> firstfound
            Sheets("chart").Cells(Sheets("chart").Range("B65536").End(xlUp). _
            Offset(1, 0).Row, 2) = num
            End If
        End With
    End If
length2 = Worksheets("chart").UsedRange.Rows.count
Next

Sheets("chart").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("chart").Range("A2:B10"), PlotBy:= _
xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="chart"
With ActiveChart
    .HasAxis(xlCategory, xlPrimary) = False
    .HasAxis(xlValue, xlPrimary) = True
End With
ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
End Sub



keine Ahnung warum ich eigentlich hier reinschreibe....
Hier ist jedenfalls ein Makro von MIR, das ein Sheet nach Duplikaten durchsucht und Werte die sich daneben befinden addiert. Diese werden in sheet 2 ausgegeben und ein Diagramm wird erstellt

Ähnliche Themen

Makro im MS Excel
_need_your_help  11.03.2007 - 52 Hits - 2 Antworten

Makro für Excel
Doudou  12.04.2007 - 51 Hits - 6 Antworten

Für Excel Freaks: Excel Makro für MailTo:
iogurt  06.04.2007 - 119 Hits - 2 Antworten

Excel Makro in viele Excel Files exportieren
SteffenVV  23.07.2007 - 143 Hits - 1 Antwort

Excel-Makro
Herbstzeit  16.10.2007 - 83 Hits - 4 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026