Filter für Zeilenwert Addition

Dieses Thema Filter für Zeilenwert Addition im Forum "Microsoft Office Suite" wurde erstellt von Hudson, 19. März 2007.

Thema: Filter für Zeilenwert Addition Hallo Ihr, (aber wahrscheinlich besonders zu Matjes  ;) ) ich habe eine gut gefüllte Excel Tabelle in der ich...

  1. Hallo Ihr,

    (aber wahrscheinlich besonders zu Matjes  ;) )

    ich habe eine gut gefüllte Excel Tabelle in der ich unterschiedliche aber immer wieder und vorallem häufig vorkommende Werte anhand 2er Spalten benötige.
    D.h. ich habe meine Such-Spalte, die ich z.Zt noch manuell nach unten scrollen muss und jedesmal wenn mein gesuchter Wert auftaucht, anhalte und eine Summe bestimmter Werte einer Zeile bilden muss.
    Bsp.: 1/A-Z mit Überschriften belegt.
             die Spalte F ist wichtig für meine Werte. die scroll ich jetzt runter (ca3000Zeilen) und nach ca 30 Zeilen taucht wieder so ein Wert auf.
    Dort bleib ich stehen (zB. F/30) und summiere die Werte (G-M/30) auf und lasse diese dann in F/3000 anzeigen. (Scroll-Arbeit! :tickedoff: ) Jetzt muss ich aber wieder hoch nach der nächsten Zeile in der F spalte suchen, diese Werte der zeile (zB. von F/62) dann addieren und in F/3001 anschreiben um dann F/3000+F/3001 einzugeben. Und das ganze jetzt dann die ganze Zeit!!!!!

    Brauche so eine Art Filter auf eine Spalte der mir dann gleich die Werte, aus der Zeile, in der die Zelle mit SuchWert gefunden wurde, aus gewünschten Spalten addiert und das ganze sooft bis alle Suchwerte gefunden wurden und das ganze in einer Zelle ausgibt?

    Komplex? Noch eine Anmerkung hätte ich  ???
    Kann man dem filter ein 2tes Suchkriterium geben das mit UND verknüpft wird?
    Weil der Wert in Spalte F immer 2x vorkommt, nur differenziert durch eine Wertangabe in Spalte E. (die aber zu allgemein ist um nur nach der zu suchen: zB rechts und links!)
    Also zuerst den Suchwert eingeben und dann die UND Bedingung aus Spalte E.
    Möglich?

    Wäre jedem Dankbar, der so ein ähnliches Problem schon mal hatte und wie er das gelöst hat!
    Und ganz besonders nem Makro!

    Vielen Dank (überhaupt erstmal zum Problem lesen ;) )

    MFg
     
  2. Hallo Hudson,

    also ich hab mir das mal angeschaut.

    Würde zunächstmal die Such-Funktion gestalten und dann das Schreiben der Summen.

    Also zunächst zur Suchfunktion:

    a) Suchbereich von Zeile 2 bis 2999 (ab 3000 wird ja was eingetragen)
    b) Suchspalte F:
    Nach was wird gesucht ? Zeichenkette oder Zahl ?
    Wie kann man alle relevanten Zeilen durch ein Suchmuster beschreiben ?
    c) Suchspalte E (2.Kriterium)
    Nach was wird gesucht ? Zeichenkette oder Zahl ?
    Wie kann man alle relevanten Zeilen durch ein Suchmuster beschreiben ?
    d) Gibt es irgendeine Abhängigkeit zwischen den bereits gefundenen Zeilen bzgl. den zu suchenden?
    e) Könntest Du mit einem Autofilter alle relevanten Zeilen finden ?

    Gruß Matjes :)

    ps: wenn da nicht ganz unerwartete Schwierigkeiten auftauchen, dann drückst Du nächste Woche nur noch 2mal auf den Knopf. ;D
     
  3. Danke!!!!!

    Ok ich muss das bissl konkretisieren.

    Die Suchspalte (nenn die etz mal D, weil ich doch zN. im VB-Code statt nem D auch ein F mit entsprechenden Anpassungen schreiben kann) enthält eine BustabenZahl (zB. 123x) und der Filter darf nur in der Zeile anhalten in der der UND Wert aus Spalte C (auch eine Buchstaben Zahl: F01 (= Integer?!?)) übereinstimmt!
    Jetzt soll das Makro einen Wert aus lesen und zwar aus einer Zelle die +3 Spalten und + 1 Zeile steht.
    Ok klingt verwirrend also ein Bsp.:

    Ich scroll D nach unten bis ich 123x finde; brauch mir aber gar nicht groß die Werte anzuschauen, weil in der Spalte C ein F02 steht...also weiter bis ich wieder 123x finde.
    In Zeile D35 werd ich wieder fündig und in C35 steht F01-> Passt!
    Jetzt geh ich in G36 und kopiere den Wert in die Zwischenablage.
    Spiel von Vorn. Weiter nach 123x suchen, schauen ob F01 in der C Spalte steht, wenn ja +3 spalten + 1 Zeile, Wert der gefundenen Zelle kopieren. Das ganze solange bis ich D durchgesucht habe.
    Wenn ich die vielen werte durch bin und hoffentlich keinen vergessen habe, bilde ich die Summe aller gefundenen werte in einer Zelle. Zb. in G3000 (feste Zellen zuweisung im Makro wäre doch ok? kann ich ja dann nach belieben Ändern? )

    Ich hoffe man versteht hieraus dass das ganze eine augenanstrengende Sisyphus-arbeit ist :'(, und ein vergessener Wert die Hölle ist! diese Arbeit könnte mir gerne ein Makro abnehmen...hust...

    (kann man auch im VB-Code angeben dass die Spalte D nur zwischen 500 und 1500 durchsucht werden soll?)
    Auswahl über 2 ComboBoxen die sich auf die Such- bzw UND- Spalten beziehen?
    Ich hoffe ich konnte ein bisschen mehr Klarheit bringen...

    VIELEN DANK  :1



     
     
  4. Hallo Hudson,

    ich hab dir einen Prototyp zusammengebaut.

    a) Comboboxen sind zunächst durch Inputboxen ersetzt.
    b) Die Zeilen, die du anpassen mußt, stehen oben im Makro und sind gekennzeichnet.

    Funktionsweise:

    Das Makro sammelt die von dir beschriebenen Daten zusammen und gibt sie in einer temp- Mappe aus (Zeile Fundort, Zeile tiefer gefundener Wert, Summe).

    So kannst Du vergleichen, ob eine von dir von Hand berechnete Mappe mit dem Makro-Ergebnis übereinstimmt.


    Gruß Matjes :)
    Code:
    Option Explicit
    
    Private Type MyWerte_struct
      lZeile As Long
      dWert  As Double
    End Type
    
    '******************************************************************
    Sub SuchenIn2SpaltenUndSpezSumme()
    
    '< < < A N P A S S E N > > >
      Const cZ_ERSTESUCHZEILE = 2         ->muß >= 2 sein !!!
      Const cZ_LETZTESUCHZEILE = 2999
      Const cSP_SPALTE_FUER_SUCHBEGRIFF_1 = 6->entspricht F
      Const cSP_SPALTE_FUER_SUCHBEGRIFF_2 = 5->entspricht E
      Const cSP_SPALTE_FUER_SUMMANDEN = 8     'entspricht H
    '< < < A N P A S S E N    E N D E > > >
      
      Dim wb As Workbook, ws As Worksheet
      Dim wbt As Workbook, wst As Worksheet
      Dim sSuchbeg1 As String, sSuchbeg2 As String
      
      
     ->Suchbegriffe abfragen
      sSuchbeg1 = InputBox( _
        Eingabe für Suchbegriff 1, Hudsons Erleichterung, )
      If sSuchbeg1 =  Then Exit Sub
       
      sSuchbeg2 = InputBox( _
        Eingabe für Suchbegriff 2, Hudsons Erleichterung, )
        
     ->Nachfrage, ob Suchbegriffe i.O.
      If Not vbYes = MsgBox( _
        Folgende Suchbegriffe wurden eingegeben: & vbLf & _
        Suchbegriff1:  & sSuchbeg1 & vbLf & _
        Suchbegriff2:  & sSuchbeg2 & vbLf & vbLf & _
        Fortgefahren ??? , _
        vbYesNo + vbQuestion + vbDefaultButton1) Then Exit Sub
    
     ->aktive Mappe/Blatt
      Set wb = ActiveWorkbook: Set ws = ActiveSheet
      
     ->temp. Mappe anlegen
      Set wbt = Workbooks.Add: Set wst = wbt.Worksheets(1)
      
      Call SoTunAlsOb(ws, wst, _
                      sSuchbeg1, cSP_SPALTE_FUER_SUCHBEGRIFF_1, _
                      sSuchbeg2, cSP_SPALTE_FUER_SUCHBEGRIFF_2, _
                      cZ_ERSTESUCHZEILE, cZ_LETZTESUCHZEILE, _
                      cSP_SPALTE_FUER_SUMMANDEN)
      
        
    AUFRAEUMEN:
      wbt.Activate
      Set wb = Nothing: Set ws = Nothing
      Set wbt = Nothing: Set wst = Nothing
    End Sub
    
    '******************************************************************
    Function SoTunAlsOb(ws As Worksheet, wst As Worksheet, _
                        sSB1 As String, lSP1 As Long, _
                        sSB2 As String, lSP2 As Long, _
                        lZAnf As Long, lZEnd As Long, _
                        lSPWert As Long)
    
      Dim r As Range, Zelle As Range
      Dim lZA As Long, lZE As Long
      Dim fW() As MyWerte_struct, fWCnt As Long
      Dim x As Long, lZtCnt As Long, dWert As Double, dGesSum As Double
        
      lZA = lZAnf - 1
      lZE = lZEnd
      fWCnt = 0: ReDim fW(1 To 100)
      
     Do
      
        If lZA < lZE Then
          Set r = ws.Range(ws.Cells(lZA, lSP1), ws.Cells(lZE, lSP1))
          Set Zelle = r.Find( _
                        What:=sSB1, _
                        After:=ws.Cells(lZA, lSP1), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchDirection:=xlPrevious)
          
          If Zelle Is Nothing Then Exit Do
          
          If sSB2 = ws.Cells(Zelle.Row, lSP2).Value Then
           ->*** Zeile mit Suchbegriff1 und 2 gefunden
    
           ->Summanden aus der nächsten Zeile lesen
            dWert = ws.Cells(Zelle.Row + 1, lSPWert).Value
            
           ->In Feld merken
            fWCnt = fWCnt + 1
            If UBound(fW()) < fWCnt Then ReDim Preserve fW(1 To fWCnt + 100)
            fW(fWCnt).lZeile = Zelle.Row
            fW(fWCnt).dWert = dWert
            
          End If
      
          lZE = Zelle.Row - 1
        Else
          Exit Do
        End If
      Loop
      
     ->gemerkte Werte auf tmp. Workbook ausgeben
     ->Überschriften in tmp. Workbook
      lZtCnt = 1
      wst.Cells(lZtCnt, 1).Value = Zeile
      wst.Cells(lZtCnt, 2).Value = Wert
      wst.Cells(lZtCnt, 3).Value = Summe
      dGesSum = 0#
      For x = fWCnt To 1 Step -1
        lZtCnt = lZtCnt + 1
        wst.Cells(lZtCnt, 1).Value = fW(x).lZeile
        wst.Cells(lZtCnt, 2).Value = fW(x).dWert
        dGesSum = dGesSum + fW(x).dWert
        wst.Cells(lZtCnt, 3).Value = dGesSum
      Next
      
    AUFRAEUMEN:
      Set r = Nothing: Set Zelle = Nothing
    End Function
     
  5. Hudsons Erleichterung, oooooooh JA! :D

    Vielen Dank Matjes, Du bist genial!!!! :1

    Arbeite jetzt an der Implementierung und werde Dir aufjedenfall noch ein Feedback schreiben!
    (bin aber grad bissl ausgelastet, so dass ich eventuell erst übermorgen dazu komme)

    Danke auch für Deine Mühen bezüglich der 'Beschreibungen mml (sind genial)

    MFg
     
Die Seite wird geladen...

Filter für Zeilenwert Addition - Ähnliche Themen

Forum Datum
Family Safety Webfilter für Windows Phone nicht möglich Windows 8 Forum 13. März 2015
Spamfilter für Windows? E-Mail-Programme 3. Juni 2014
Internet Sperre, Filter für Jugendliche Sonstiges rund ums Internet 25. Okt. 2010
Photoshop Filter für Effekt einer Digitalisierung-Rasterung Windows XP Forum 11. Nov. 2007
Webseitenfilter für Windows Server 2003 Windows XP Forum 22. Sep. 2007