Microsoft Excel

Herbers Excel/VBA-Archiv

Doppelte einträge und listen

Betrifft: Doppelte einträge und listen von: chris b
Geschrieben am: 27.08.2004 12:39:37

Hallo Excel Profis,
habe dieses mal ein ganz schweres Problem und hoffe das ihr mir helfen könntet.
Ich versuche es ganz genau zu erklären..
Habe zwei spalten A|B unter diesen Spalten stehen werte unter A stehen Zahlenwerte
4,444
4,442
2,434
23,555
usw..
und in Spalte B stehen Daneben P Nummern
p1234
p2345
p1122
p1255
p1234
p3233
p1234
p1255
usw...
Dabe stehen viele p Nummern Doppelt in dieser Spalte
A | B
4,3 p123
5,7 p345
1,3 p123
5,9 p123
usw.. usw...


Was ich jetzt möchte ist das es ab Spalte d neue Spalten überschriften gibt mit den einzelnen verschiedenen P-nummern
in dem obigen beispiel wären es dann

Spalte D |Spalte E |
1 | p123 | p345
2
3
4
5
usw..

in dem Beispiel wären es jetzt 2 neue Spalten weil in der Tabelle oben es nur zwei verschiedene Pnummern gibt die p123 und die p345.
Und dann soll noch unter den einzelen P-Nummern die summe summiert werden von den aus der obigen Tabelle in Spalte A und B die werte aufaddiert werden.
Also sollten unter p123 diese werte stehen 5,9 und 1,3 und 4,3 ....
und unter p345 dann die werte "5,7" .
Ich hoffe ich habe es einigermaßen verständlich erklärt , vielen Dank für eure Hilfe

  


Betrifft: AW: Doppelte einträge und listen von: Boris
Geschrieben am: 27.08.2004 12:53:21

Hi Chris,

ne reine Array-Formellösung - wenn der Datenbereich nicht allzu groß ist (im Beispiel bis Zeile 100), dann dürfte das noch performant genug sein (andernfalls mit Hilfsspalten oder VBA arbeiten):

In D1:
{=WENN(SPALTE(A$1)>SUMME(WENN($B1:$B100<>"";1/ZÄHLENWENN($B1:$B100;$B1:$B100)));"";INDEX($B:$B;KKLEINSTE(WENN(ZÄHLENWENN(INDIREKT("B1:B"&ZEILE($1:$100));$B1:$B100)=1;ZEILE($1:$100));SPALTE(A$1))))}

und nach rechts kopieren.

In D2:
{=WENN(ZEILE($A1)>ZÄHLENWENN($B:$B;D$1)*(D$1<>"");"";INDEX($A:$A;KKLEINSTE(WENN($B$1:$B$100=D$1;ZEILE($1:$100));ZEILE($A1))))}

und sowohl runter als auch nach rechts kopieren.

{geschweifte Klammern} nicht eingeben, sondern Formeleingabe mit Strg.Shift-Enter abschließen. Das erzeugt sie.

Grüße Boris


  


Betrifft: AW: Doppelte einträge und listen von: chris b
Geschrieben am: 27.08.2004 13:05:40

Danke aber klappt nicht, und brauche das genze in VBA Danke trotzdem !


  


Betrifft: AW: Doppelte einträge und listen von: Boris
Geschrieben am: 27.08.2004 13:30:09

Hi Chris,

Danke aber klappt nicht
Doch - das klappt.

brauche das genze in VBA

Schreib das doch direkt dabei...

Option Explicit

Sub chris_b()
Dim l As Long, C As Range, fA As String, i As Long
[d:iv].Clear
[b:b].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[iv1], Unique:=True
Range("IV1:IV" & [iv65536].End(xlUp).Row).Copy
[d1].PasteSpecial Transpose:=True
Columns(256).Delete
For l = 1 To WorksheetFunction.CountA([d1:iv1])
    i = 2
    Set C = [b:b].Find(Cells(1, l + 3), lookat:=xlWhole)
    If Not C Is Nothing Then
        fA = C.Address
        Do
            Cells(i, l + 3) = C.Offset(0, -1)
            Set C = [b:b].FindNext(C)
            i = i + 1
        Loop While Not C Is Nothing And C.Address <> fA
        Set C = Nothing
        i = 2
    End If
Next l
End Sub


Grüße Boris


  


Betrifft: AW: Doppelte einträge und listen von: MRP
Geschrieben am: 27.08.2004 12:56:15

Hallo,
ich würde ersteinmal die Spalte B mit dem Spezialfilter Duplettenfrei machen ( Daten/Filter/Spezialfilter ohne Duplikate ). Diese neue Liste dann kopieren und in Spalte D Bearbeiten/Inhalte einfügen Transponieren.
Soweit zum ersten Teil, für den Rest hab ich grad auf die Schnelle noch keine Idee.
Ciao
Manuele Rocco Parrino


  


Betrifft: AW: Doppelte einträge und listen von: chris b
Geschrieben am: 27.08.2004 13:02:38

Danke für eure Hilfe euch beiden,
aber ich benötige das ganze in VBA und dafür weiß ich leider keine Lösung Array formel nützen mir in dem Fall nicht.Hoffe es findet sich noch jemand der mir ein VBA Beispiel geben könnte, vielen Dank !


  


Betrifft: AW: Doppelte einträge und listen von: Christoph M
Geschrieben am: 27.08.2004 13:41:23

Hi Chris,
so zB.
Gruß
Christoph
(PS: bau dir noch 'ne Fehlerabfangung rein, wenn k = 256 ist. - bei VBA-gut ist das ja wohl kein Problem)


Option Explicit
Sub Spalten()
Dim i%, k%, vgl

k = 2
With Sheets("Tabelle1")
   .Range(.Cells(1, 3), .Cells(2, 256)).ClearContents
   For i = 1 To .Cells(Rows.Count, 2).End(xlUp).Row
      vgl = Application.Match(.Cells(i, 2), .Range(.Cells(1, 3), .Cells(1, 256)), 0)
      If IsError(vgl) Then
         k = k + 1
         .Cells(1, k) = .Cells(i, 2)
         .Cells(2, k) = .Cells(i, 1)
      Else:
         .Cells(2, vgl + 2) = .Cells(2, vgl + 2) + .Cells(i, 1)
      End If
   Next
End With
End Sub



  


Betrifft: AW: Doppelte einträge und listen von: chris b
Geschrieben am: 27.08.2004 15:36:41

vielen Dank !


  


Betrifft: Danke für die Rückmeldung (o.T.) von: Christoph M
Geschrieben am: 27.08.2004 17:14:48




 

Beiträge aus den Excel-Beispielen zum Thema "Doppelte einträge und listen "