ich habe eine für mich ziemlich schwere Aufgabe und hoffe mir kann jemand helfen.Und zwar sind in meiner Tabelle, die ziemlich groß ist (99 Spalten und 2500 Zeilen), in der Spalte Y mehrere verschiedene Namen. Nun möchte ich das daneben,also in Spalte CV, die Namen aufgelistes werden (jeweils einmal)und daneben wie oft diese in der Tabelle vorkommen. Damit ich dann ein Diagramm daraus bilden kann. Eine Makrolösung wäre mir hier am liebsten.
Ich hoffe es findet sich jemand der mir helfen kann.
Im voraus schon mal Danke
werde aus Deinem posting nicht schlau.
>>in der Spalte Y mehrere verschiedene Namen. Nun möchte ich das daneben,also in Spalte CV, die Namen aufgelistes werden (jeweils einmal)und daneben wie oft diese in der Tabelle vorkommen. >>
nach welchen KRITERIEN sollen die namen aufgelistet werden ?
kannst Du einen auszug aus Deiner tabelle posten.
gruss thomas
hier ein Beispiel
Spalte_A-X|Spalte_Y|Spalte _Z-CU|Spalte_CV|Spalte_CW
div Daten_|_Holger_|_div. Daten_|_leer____|_leer
div Daten_|_Jens___|_div. Daten_|_leer____|_leer
div Daten_|_Holger_|_div. Daten_|_leer____|_leer
div Daten_|_Holger_|_div. Daten_|_leer____|_leer
div Daten_|_Ralf___|_div. Daten_|_leer____|_leer
div Daten_|_Claudia|_div. Daten_|_leer____|_leer
div Daten_|_Jens___|_div. Daten_|_leer____|_leer
so ungefähr sieht die tabelle aus, nur sind es noch mehr Namen ca. 50 und die Tabelle weiterzuführen würde hier den Rahmen sprengen.
So und nun möchte ich das es zum schluss wie folgt aussieht:
Spalte_A-X|Spalte_Y|Spalte _Z-CU|Spalte_CV|Spalte_CW
div Daten_|_Holger_|_div. Daten_|_Holger__|_3
div Daten_|_Jens___|_div. Daten_|_Jens____|_2
div Daten_|_Holger_|_div. Daten_|_Ralf____|_1
div Daten_|_Holger_|_div. Daten_|_Claudia_|_1
div Daten_|_Ralf___|_div. Daten_|_leer____|_leer
div Daten_|_Claudia|_div. Daten_|_leer____|_leer
div Daten_|_Jens___|_div. Daten_|_leer____|_leer
Wobei die Reihenfolge der Namen keine Rolle spielt.
Ich hoffe es ist jetzt etwas eindeutiger dargestellt und Du kannst mir weiter helfen.
Ingo
leider wurden die Spaltenköpfe im Beispiel nicht richtig ausgegeben, in den Formeln habe ich aber die Spalten entsprechend Deiner Fragestellung benutzt.
A entspricht Y
B entspricht CV
C entspricht CW
Gruß
Berai
ist es Dir so genehm:
Ich bin davon ausgegangen, dass in der Zeile 1 Spaltenüberschriften stehen; widrigenfalls muss eine Makroanpassung erfolgen.
Viel Erfolg wünscht
WernerB.
Danke für deine Formeln, aber das hatte ich auch schon ausprobiert. Diese Methode ist nur nicht mehr machbar bei der Tabelle die ich habe, wie schon geschrieben bei ca. 2500 Zeilen und über 50 Namen.
Aber danke für Deine Bemühung
gruss Ingo
die Formel ist vom Ergebnis, so wie ich es mir vorgestellt habe. Danke !
Nur habe ich noch eine Frage.
Bei meiner Tabelle hat es ca. 15 Minuten gedauert bis das Makro alle Daten erfasst hat. Gibt es eine Möglichkeit dieses etwas zu beschleunigen. Wie gesagt das Ergebnis war in Ordnung.
Gruss ingo
mit einem anderen Lösungsansatz konnte ich eine jetzt (hoffentlich) annehmbare Laufzeit erreichen.
Du musst allerdings dabei in Kauf nehmen, dass die Namen in Spalte CV alphabetisch sortiert sind.
Viel Erfolg wünscht
WernerB.
Ich bin trotzdem erstaunt auf was für interesant Lösungen ich hier stoße.
Ich möchte mich schonmal bei allen bedanken die Zeit und Grips investiert haben um mir zu helfen.
Ingo
Die Formel ist ausgezeichnet, hat auch nur ne 10 sek gebraucht bis alle Werte ermittelt waren.
Kannst Du mir nochmal helfen?
Ich möchte noch das die Auswertung nicht zwische Gross und Kleinschreibung unterscheidet. Wie es in der Übersichtsspalte ( also CV) dargestellt wir ist mir dann auch egal.
Außerdem habe ich festgestellt das in einigen Zellen vor den ersten Buchstaben ein leer Zeichen ist. Auch hier wäre es gut wenn die Formel diese ignorieren würde.
Ich habe Deine Formel auch etwas erweitert und habe noch eine Frage zu dem Diagramm das erstell wird. wie kann ich unter jeden Balken den Namen schreiben lassen, zur Zeit wird nur der erste Name unter dem Diagramm geschrieben. Ich möchte aber nicht auf die farbigen Balken verzichten. Wenn ich alle Balken mit einer Datenreihe erstelle klappt es ja, aber alle Balben sind nur in einer Farbe.
Hier der jetzige Stand der Formel
Sub HaeufigkeitNamen()
Dim BlaNa As String, s As String
Dim fiR As Long, laR As Long, laRn As Long, anz As Long, i As Long
Dim x As Long
Dim y As Long
Dim o As Long
Dim z As Long
Dim summe As Variant
Application.ScreenUpdating = False
BlaNa = ActiveSheet.Name
laR = Cells(Rows.Count, 25).End(xlUp).Row
Sheets.Add
ActiveSheet.Move After:=Sheets(Sheets.Count)
Sheets(BlaNa).Range("Y2:Y" & laR).Copy
ActiveSheet.Range("Y2:Y" & laR).PasteSpecial Paste:=xlValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("Y2:Y" & laR).Sort Key1:=Range("Y2"), _
Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
fiR = 1
Do While Not i >= laR
anz = 0
For i = fiR To laR
s = Cells(fiR, 25).Value
If Cells(i, 25).Value = s Then
anz = anz + 1
Else
laRn = Cells(Rows.Count, 100).End(xlUp).Row
Cells(laRn + 1, 100).Value = s
Cells(laRn + 1, 101).Value = anz
fiR = i
Exit For
End If
Next i
If i > laR Then Exit Do
Loop
laR = Cells(Rows.Count, 100).End(xlUp).Row
ActiveSheet.Range("CV2:CW" & laR).Copy
Sheets(BlaNa).Range("CV2:CW" & laR).PasteSpecial Paste:=xlValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Application.DisplayAlerts = False
Sheets(Sheets.Count).Delete
Application.DisplayAlerts = True
Sheets(BlaNa).Select
Application.ScreenUpdating = True
Range("CV1").Select
'Bildet die Summe alles Namen
z = 2
Do Until IsEmpty(Cells(z, 101))
z = z + 1
Loop
For o = 2 To z
summe = summe + Cells(o, 101).Value
Next o
Cells(1, 100).Value = "Verantwortlich"
Cells(1, 101).Value = "Anzahl"
Cells(1, 102).Value = "Gesamt"
Cells(2, 102).Value = summe
'Diagramm wird erzeugt
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets(BlaNa).Range(Sheets(BlaNa).Cells(2, 100).Address & ":" & Sheets(BlaNa).Cells(laRn + 1, 101).Address), PlotBy _
:=xlColumns
ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False
ActiveChart.HasLegend = False
x = 1
For y = 1 To laRn - 1
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(x).Values = Sheets(BlaNa).Cells(x + 1, 101)
ActiveChart.SeriesCollection(x).Name = Sheets(BlaNa).Cells(x + 1, 100)
x = x + 1
Next y
ActiveChart.Location Where:=xlLocationAsNewSheet
With ActiveChart
.HasTitle = True
.ChartTitle.Text = "Gesamtübersicht aller Verursacher bei " & summe & " Schadmeldungen"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Verursacher"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Anzahl"
End With
Sheets(BlaNa).Select
Range("A1").Select
End Sub
Im voraus nochmal Danke für die investierte Zeit
Ingo
Außerdem nicht wundern in der Formel ist kein Fehler in der dritten Zeile unter dem Kommentar "'Diagramm wird erzeugt". Habe die Formel nur reinkopiert und nicht aufgepasst ob es mit der Länge hinhaut.
Müsste theoretisch so aussehen
ActiveChart.SetSourceData Source:=Sheets(BlaNa).Range(Sheets(BlaNa) _
.Cells(2, 100).Address & ":" & Sheets(BlaNa).Cells(laRn + 1, 101).Address), PlotBy _
:=xlColumns
Gruss
Ingo
habe die Lösung für mein Problem mit der Groß/Kleinschreibung und dem Leerzeichen selbst gefunden
Habe folgende Formellösung eingefügt
For a = 2 To laR
Text = Cells(a, 25).Value ' Zeichenfolge initialisieren.
Trim = LTrim(Text) ' Trim = "<-Name "
Cells(a, 25).Value = Trim
Text = Cells(a, 25).Value
Groß = UCase(Text) ' Groß = " Grossbuchstaben"
Cells(a, 25).Value = Groß
Next a
ist wahrscheinlich nicht das non plus ultra, aber es funktioniert.
Auch stimmt die Formel vom Beitrag zuvor nicht mehr, habe noch einige Punkte modifiziert.
Nun habe ich trotzdem noch das Problem mit der Balkenbeschriftung unterhalb jedes Balkens im Diagramm
Würde mich freuen wenn mir jemand bei meinen letzten Problem helfen könnte
MfG
Ingo
Deine Wünsche betreffend Gross-/Kleinschreibung und Nichtberücksichtigung von führenden/abschließenden Leerzeichen (hatte ich auch ohne Deinen Nachtrag so verstanden) sind jetzt eingearbeitet.
Bei der Gelegenheit habe ich auch noch zwei kleinere Programmfehler entdeckt und eliminiert.
Was die Angelegenheit mit dem Diagramm betrifft, so bitte ich Dich, doch diesbezüglich einen neuen Thread aufzumachen.
Zum Einen handelt es sich dabei um ein völlig neues Problem, zum Andern arbeite ich zwar gelegentlich auch mit Diagrammen, allerdings nur manuell; mit Makros, die Diagramme erzeugen oder bestehende verändern, habe ich mich noch nie befasst.
Von daher ist es sicherlich effizienter, wenn diesen Part ein Diagramm-Makroerfahrener Forumsteilnehmer übernimmt.
Ich bitte dafür um Verständnis.
MfG
WernerB.
Du hast mir sehr weitergeholfen. Ich hätte wahrscheinlich wochenlang gegrübelt wie ich das hinbekomme.
Werde die neue Formel gleich ausprobieren.
Was den Rest angeht ist kein Problem, das bekomme ich auch noch irgendwie zusammen.
MfG
Ingo