Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
992to996
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
992to996
992to996
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

doppelte werte nur einmal auslesn

doppelte werte nur einmal auslesn
08.07.2008 18:49:00
Marko
hallo ;-)
ich habe zwei arbeitsmappen.... eine heißt daten (das tabellenblatt darin heißt auftrag) und die andere arbeismappe heißt übersicht....
in der arbeitsmappe daten stehen in spate E von e5 bis e200 werte die einmal aber auch z.b. 30 mal vorkommen können (also z.b. 20 verschiedene werte, die aber doppelt und dreifach vorhanden sind)
nun möchte ich gerne in der arbeitsmappe Übersicht ab zelle a5 die 20 verschiedenen werte sehen und ab zelle b5 wie oft der wert vorhanden ist.... also in spalte a jeden wert einmal und in spalte b dann die anzahl....
kann mir da jemand helfen? die anzahl der werte wollte ich nicht so gerne über formeln haben sonder am besten auch über vba!
wär schön wenn sich der sache mal jeman annehmen könnte da ich nicht so wirklich weiß wie das geht!
gruß marko

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: doppelte werte nur einmal auslesn
08.07.2008 20:03:13
Erich
Hallo Marko,
probier mal

Option Explicit
Sub Auswert()
Dim arrQ, zz As Long, colH As New Collection, arrE() As Double
arrQ = Application.Transpose(Workbooks("daten").Sheets("auftrag").Range("E5:E200"))
For zz = 1 To UBound(arrQ)
On Error Resume Next
colH.Add arrQ(zz), CStr(arrQ(zz))   ' ohne Dubletten
On Error GoTo 0
Next zz
ReDim arrE(1 To 2, 1 To colH.Count)
For zz = 1 To colH.Count
arrE(1, zz) = colH(zz)
arrE(2, zz) = WorksheetFunction.CountIf(Sheets("auftrag").Range("E5:E200"), _
arrE(1, zz))
Next zz
With Workbooks("Übersicht").Worksheets(1)
.Range(.Cells(5, 1), .Cells(colH.Count + 4, 2)) = Application.Transpose(arrE)
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: doppelte werte nur einmal auslesn
08.07.2008 22:01:00
Marko
hallo erich
besten dank, das klappt soweit super....
allerdings hab ich natürlich mal wieder was vergessen.... in e5 bis e200 können auch leere zellen sein und die zählt er nun leider als null mit...
kann man das noch abstellen?
gruß marko

AW: doppelte werte nur einmal auslesen
09.07.2008 07:19:23
Erich
Hi Marko,
dann vielleicht so?

Option Explicit
Sub Auswert()
Dim arrQ, zz As Long, colH As New Collection, arrE(), rng As Range
With Workbooks("daten").Sheets("auftrag")
For Each rng In .Range("E5:E200")
If IsEmpty(rng) Then rng = "|LEER|"
Next rng
arrQ = Application.Transpose(.Range("E5:E200"))
For zz = 1 To UBound(arrQ)
On Error Resume Next
colH.Add arrQ(zz), CStr(arrQ(zz))   ' ohne Dubletten
On Error GoTo 0
Next zz
ReDim arrE(1 To 2, 1 To colH.Count)
For zz = 1 To colH.Count
arrE(1, zz) = colH(zz)
arrE(2, zz) = WorksheetFunction.CountIf(.Range("E5:E200"), arrE(1, zz))
Next zz
End With
With Workbooks("Übersicht").Worksheets(1)
.Range(.Cells(5, 1), .Cells(colH.Count + 4, 2)) = Application.Transpose(arrE)
End With
For Each rng In Workbooks("daten").Sheets("auftrag").Range("E5:E200")
If rng = "|LEER|" Then rng.ClearContents
Next rng
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: doppelte werte nur einmal auslesen
09.07.2008 15:26:00
Marko
hallo erich,
dadurch das in spalte E nun für jede leere zelle "LEER" steht schreibt er nun auch in spalte a Leer und zählt diese.... das ist auch irgendwie doof....
ich weiß, ich bin da nervig, grade weil ich das selber garnicht hinbekomme, nur so gefällt mir das auch nicht....
es gibt leider auch zwei arten von werten die da stehen.... einmal nur zahlen, also z.b. 345751 und dann könnte auch ein buchstabe vorweg sein.... das würde dann z.b. so aussehen P6543788
magste dich da nochmal mit befassen? :-)
gruß marko

AW: doppelte werte nur einmal auslesen
09.07.2008 17:51:47
Erich
Hi Marko,
du hattesat nicht geschrieben, was mit Leerzellen passieren soll - nur, dass sie nicht mit Nullen zusammen
gezählt werden sollten.
Der folgende Code zählt Leerzellen nicht:

Option Explicit
Sub AuswertN()
Dim arrQ, zz As Long, colH As New Collection, arrE(), rng As Range
With Workbooks("daten").Sheets("auftrag")
zz = IIf(IsEmpty(.Cells(200, 5)), .Cells(200, 5).End(xlUp).Row, 200)
If zz 

Dass in der Liste Zahlen und Texte stehen, sollte nicht stören.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: doppelte werte nur einmal auslesen
09.07.2008 18:26:00
Marko
hallo erich
ich danke dir, nun klappt es prima.... schön das du mir so gut geholfen hast!
ich hoffe nur das jetzt nicht mal trennstriche oder sowas wie nen unterstrich zwischen den blöcken mit den werten kommt aber ich will mal den teufel nicht schon vorher an die wand malen!
gruß marko

319 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige