Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1028to1032
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
Inhaltsverzeichnis

Was muss ich denn hier am Code ändern ?

Was muss ich denn hier am Code ändern ?
09.12.2008 12:35:00
Dieter
HI,
ich habe eine Funktion auf meinem Sheet, die doppelte datensätze zusammen fassen soll:
https://www.herber.de/bbs/user/57479.xls
(von Cathy)
Das funktioniert so weit . Der Code fasst aber immer nur 2 Datensätze zusammen. Wenn ich von einem Datensatz (siehe Spalte B) 3 oder mehr habe, dann muss ich den Code nocheinmal starten, damit auch dieser mit einbezogen wird.
(für jeden Datensaht mehr muss ich den Code dann ein weiteres mal starten)
Der Code arbeitet also immer nur zum nächste Doppel
Unter Umständen kann es vorkommen, das von einer ID (Spalte B) 4 gleiche vorkommen.
Ist es irgend wie möglich, die in einem Durchgang zusammen zufassen ?
Danke
Dieter

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Was muss ich denn hier am Code ändern ?
09.12.2008 13:02:44
Erich
Hallo Dieter,
probier mal:

Option Explicit
Sub DatenZusammenfassen()
Dim wks As Worksheet
' Zeilenvariablen definieren                                                    .
Dim intAR As Integer
Dim intFR As Integer
Dim intLR As Integer
Dim intR As Integer
Dim strSuchtext As String
Dim rngSuchBereich As Range
' benötigte Spaltenkonstanten bestimmen                                         .
Const ColB  As Integer = 2
Const ColL As Integer = 12
Const ColP As Integer = 16
Const ColS As Integer = 19
Const ColAB As Integer = 42
Const ColBB As Integer = 54
Const ColBK As Integer = 63
' Aktives Tabellenblatt definieren                                              .
Set wks = ActiveWorkbook.Sheets("Tabelle1")
' Letzte Zeile ermitteln                                                        .
intFR = 10
intLR = wks.UsedRange.Rows.Count
' Zeilendurchlauf                                                               .
For intR = intFR To intLR
strSuchtext = wks.Cells(intR, ColB)
If strSuchtext > "" Then
Set rngSuchBereich = wks.Range(Cells(intR + 1, ColB), Cells(intLR, ColB))
' weiterer Eintrag vorhanden?                                           .
While WorksheetFunction.CountIf(rngSuchBereich, strSuchtext) > 0
intAR = WorksheetFunction.Match(strSuchtext, rngSuchBereich, 0)
intAR = intR + intAR
' 1. Eintrag aktualisieren                                              .
' Addition
wks.Cells(intR, ColL).Value = wks.Cells(intR, ColL).Value _
+ wks.Cells(intAR, ColL).Value
wks.Cells(intR, ColS).Value = wks.Cells(intR, ColS).Value _
+ wks.Cells(intAR, ColS).Value
wks.Cells(intR, ColAB).Value = wks.Cells(intR, ColAB).Value _
+ wks.Cells(intAR, ColAB).Value
wks.Cells(intR, ColBB).Value = wks.Cells(intR, ColBB).Value _
+ wks.Cells(intAR, ColBB).Value
wks.Cells(intR, ColBK).Value = wks.Cells(intR, ColBK).Value _
+ wks.Cells(intAR, ColBK).Value
' Text
wks.Cells(intR, ColP).Value = wks.Cells(intR, ColP).Value & "; " _
& wks.Cells(intAR, ColP).Value
' 2. Eintrag löschen
Debug.Print Cells(Rows.Count, 2).End(xlUp).Address
Debug.Print Sheets("GeloeschteDaten").Cells(Rows.Count, 2).End(xlUp).Address
Rows(intAR).Copy _
Sheets("GeloeschteDaten").Cells(Rows.Count, 2).End(xlUp).Offset(1, -1)
Rows(intAR).Delete Shift:=xlUp
intLR = intLR - 1
Wend
End If
Next intR
' Objektvariablen aufheben                                                     .
Set wks = Nothing
Set rngSuchBereich = Nothing
End Sub

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

Anzeige
AW: Was muss ich denn hier am Code ändern ?
09.12.2008 20:23:00
Dieter
Hallo Erich,
vielen dank, funktioniert. :-)
Bearbeitet der Code nur 4 gleiche Datensätze, oder soviel er findet (unbegrenzt)
Danke,
Gruss
Dieter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige