Benötige Hilfe bei Datei

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Benötige Hilfe bei Datei von: Daniel
Geschrieben am: 29.03.2005 19:47:20

Hallo Zusammen!

Ich habe ein Problem, das ich in einer Datei beschrieben habe, da es ansonsten sehr schwer zu erklären ist.
Ich benötige dazu bitte eine Formel oder ein Makro, da die Datei die ich bearbeiten muss sehr groß ist.

https://www.herber.de/bbs/user/20347.xls


Ich danke für jegliche Hilfe,
Daniel

Bild


Betrifft: mit hilfsspalte in L von: ransi
Geschrieben am: 29.03.2005 22:20:37

hallo daniel

schau mal hier,
ist zwar gekrampft, aber ich glaube es läuft.
3 variable ranges auf einen nenner bringen, na ja..
geht bestimmt auch eleganter, aber ich weiss nicht wie.
https://www.herber.de/bbs/user/20352.xls

ransi


Bild


Betrifft: korrektur. Hatte vor lauter... von: ransi
Geschrieben am: 29.03.2005 22:51:48

hallo daniel
...if then else und offset() den überblick verloren.



      
hallo daniel

Option Explicit
Dim bereich As Range

Public Sub start()
    
Dim a As Long
    
Dim b As Long
a = 1
b = 1
Do Until b = 100 'bis zeile 100
If a > 100 Then Exit Do
        
If Cells(b, 12) = Cells(a, 12) Then
               a = a + 1
        Else:
        
Set bereich = Range(Cells(b, 12), Cells(a - 1, 12))
        
Call ersetz
        b = a
        
End If
 
Loop
End Sub

Public Sub ersetz()
    
Dim PT As Range
    
Dim wo As Range
    
Dim zelle As Range
    
Dim wert As Double
wert = 100000 
'dummy
Set PT = bereich.Offset(0, 1)
Set wo = bereich.Offset(0, -5)
For Each zelle In PT
    
If zelle.Value = "PT" Then
        
If wert > zelle.Offset(0, -6) Then wert = zelle.Offset(0, -6)
    
End If
Next
For Each zelle In wo
    
If zelle.Offset(0, 6) = "PT" Then If zelle.Value > wert Then zelle.Value = wert
Next
End Sub

ransi 


     Code eingefügt mit Syntaxhighlighter 3.0




Bild


Betrifft: AW: korrektur. Hatte vor lauter... von: Daniel
Geschrieben am: 30.03.2005 15:01:22

Hi ransi,

irgenwie geht das noch nicht.
Ich bekomme den Fehler "Objektvariable oder With-BlockVariable nicht festgelegt". Im Debugger wird die Zeile "Set PT = bereich.Offset(0, 1)" gelb markiert.

Vielleicht habe ich das auch falsch angegangen. Was mache ich falsch?

Grüße,
Daniel


Bild


Betrifft: AW: korrektur. Hatte vor lauter... von: ransi
Geschrieben am: 30.03.2005 16:47:55

hallo daniel

versuch mal so:
rechte maus auf den tabellenreiter von der relevanten tabelle.
code anzeigen...
in das sich öffnende fenster den code.

am besten hieraus kopieren und wo beschrieben einfügen.
der code besteht aus 2 proceduren.
du musst "Public Sub start()" starten.
in ihr wird die variable bereich festgelegt.
in der zweiten sub wird mit
"Set PT = bereich.Offset(0, 1)" auf die variable bereich zugegriffen.

wenn du als erstes die "Public Sub ersetz()" startest, hat bereich noch keinen wert und es kommt zum fehler.

ransi


Bild


Betrifft: AW: korrektur. Hatte vor lauter... von: Daniel
Geschrieben am: 30.03.2005 19:34:30

Hi ransi,

hmmm. Also ich habe das jetzt im Code-Fenster eingefügt so wie du gesagt hast.
Dann bin ich auf Extras,Makros gegangen und habe zuerst "start" und dann "ersetz" ausgeführt.
Leider ist gar nichts passiert!

Grüße
Daniel


Bild


Betrifft: Finger weg von " Public Sub ersetz() " von: ransi
Geschrieben am: 30.03.2005 19:51:54

hallo daniel

ich versuchs nochmal:
die procedur "Public Sub ersetz()" darfst du NICHT starten.
die läuft von alleine los.
und zwar genau dann wenn die ""Public Sub start()"
diese zeile abarbeitet:
Call ersetz

habe noch mal ein beispiel gemacht in der ein button die richtige procedur startet.
https://www.herber.de/bbs/user/20401.xls
ransi


Bild


Betrifft: hast du hilfsspalte in L ... von: ransi
Geschrieben am: 30.03.2005 19:58:10

ransi

...nach muster eingerichtet?
weil ohne gehts nicht...

ransi


Bild


Betrifft: AW: hast du hilfsspalte in L ... von: Daniel
Geschrieben am: 31.03.2005 14:31:37

Hallo ransi,

also ich benutze jetzt einfach die Datei.
Da scheint alles zu klappen. Genau kann ich das wahrscheinlich
erst heute Abend oder morgen überprüfen.

Auf jeden Fall vielen Dank für Deine Hilfe und Geduld!
Daniel


Bild


Betrifft: Tatsächlich brauche ich nochmal kurz.... von: Daniel
Geschrieben am: 31.03.2005 19:53:09

....deine Hilfe, ransi.

Ich hatte etwas vergessen zu erklären. Es gibt noch eine kleine Sache, die geändert werden müsste. Ansonsten passt das alles. Danke.
Ich habe das wieder in der Datei erklärt. Geht so einfach denke ich.
https://www.herber.de/bbs/user/20451.xls

Beste Grüße,
Daniel


Bild


Betrifft: AW: Tatsächlich brauche ich nochmal kurz.... von: ransi
Geschrieben am: 31.03.2005 20:33:08



      
hallo daniel

wenn ich dich richtig verstanden habe dann so:

Option Explicit
Dim bereich As Range

Private Sub CommandButton1_Click()
Call start
End Sub
Public Sub start()
    
Dim a As Long
    
Dim b As Long
a = 1
b = 1
Do Until b = 100 'bis zeile 100
If a > 100 Then Exit Do
        
If Cells(b, 12) = Cells(a, 12) Then
               a = a + 1
        Else:
        
Set bereich = Range(Cells(b, 12), Cells(a - 1, 12))
        
Call ersetz
        b = a
        
End If
 
Loop
End Sub

Public Sub ersetz()
    
Dim PT As Range
    
Dim wo As Range
    
Dim zelle As Range
    
Dim wert As Double
wert = 100000 
'dummy
Set PT = bereich.Offset(0, 1)
Set wo = bereich.Offset(0, -5)
For Each zelle In PT
    
'If zelle.Value = "PT" Then
        If wert > zelle.Offset(0, -6) Then wert = zelle.Offset(0, -6)
    
'End If
Next
For Each zelle In wo
    
'If zelle.Offset(0, 6) = "PT" Then
    If zelle.Value > wert Then zelle.Value = wert
Next
End Sub


ransi 


     Code eingefügt mit Syntaxhighlighter 3.0




Bild


Betrifft: Noch nicht ganz! von: Daniel
Geschrieben am: 01.04.2005 06:52:10

Guten Morgen ransi,

es passt noch nicht ganz perfekt.
Jetzt werden alle Werte ersetzt, bei denen DaysExpired steht.
Es sollen aber nur die ersetzt werden, die größer sind als die PT-WErte.
Ich habe das nochmal an einem Beispiel festgemacht:
https://www.herber.de/bbs/user/20465.xls

Vielen Dank und einen schönen Tag!
Daniel


Bild


Betrifft: AW: Noch nicht ganz! von: ransi
Geschrieben am: 01.04.2005 09:36:57



      
hallo daniel

glaube jetzt habe ich es verstanden:

such den kleinsten wert aus den zellen 
in denen "PT" steht.
Ersetze alle zellen die größer als der wert sind.
Alle werte die  Kleiner sind und 
"DaysExpired"  sind lass in ruhe.

Option 
Explicit
Dim bereich As Range

Private Sub CommandButton1_Click()
Call start
End Sub
Public Sub start()
    
Dim a As Long
    
Dim b As Long
a = 1
b = 1
Do Until b = 50000 'bis zeile 100
If a > 50000 Then Exit Do
        
If Cells(b, 12) = Cells(a, 12) Then
               a = a + 1
        Else:
        
Set bereich = Range(Cells(b, 12), Cells(a - 1, 12))
        
Call ersetz
        b = a
        
End If
 
Loop
End Sub

Public Sub ersetz()
    
Dim PT As Range
    
Dim wo As Range
    
Dim zelle As Range
    
Dim wert As Double
wert = 100000 
'dummy
Set PT = bereich.Offset(0, 1)
Set wo = bereich.Offset(0, -5)
For Each zelle In PT
'Hier wird der kleinste "PT-Wert" gesucht
    If zelle.Value = "PT" Then
        
If wert > zelle.Offset(0, -6) Then wert = zelle.Offset(0, -6)
    
End If
Next
For Each zelle In wo
    
'If zelle.Offset(0, 6) = "PT" Then
    If zelle.Value > wert Then zelle.Value = wert
Next
End Sub

ransi 


     Code eingefügt mit Syntaxhighlighter 3.0




Bild


Betrifft: AW: Noch nicht ganz! von: Daniel
Geschrieben am: 01.04.2005 21:08:48

Hallo ransi,

vielen Dank für die super Arbeit!
Du hast mir sehr geholfen. Danke.

Grüße und schönes Wochenende,
Daniel


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Rechnen mit Filtern"