Anzeige
Archiv - Navigation
588to592
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
588to592
588to592
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Benötige Hilfe bei Datei

Benötige Hilfe bei Datei
29.03.2005 19:47:20
Daniel
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

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
mit hilfsspalte in L
29.03.2005 22:20:37
ransi
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
korrektur. Hatte vor lauter...
29.03.2005 22:51:48
ransi
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


Anzeige
AW: korrektur. Hatte vor lauter...
30.03.2005 15:01:22
Daniel
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
AW: korrektur. Hatte vor lauter...
30.03.2005 16:47:55
ransi
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
Anzeige
AW: korrektur. Hatte vor lauter...
30.03.2005 19:34:30
Daniel
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
Finger weg von " Public Sub ersetz() "
30.03.2005 19:51:54
ransi
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.

Die Datei https://www.herber.de/bbs/user/20401.xls wurde aus Datenschutzgründen gelöscht

ransi
Anzeige
hast du hilfsspalte in L ...
30.03.2005 19:58:10
ransi
ransi
...nach muster eingerichtet?
weil ohne gehts nicht...
ransi
AW: hast du hilfsspalte in L ...
31.03.2005 14:31:37
Daniel
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
Tatsächlich brauche ich nochmal kurz....
31.03.2005 19:53:09
Daniel
....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
Anzeige
AW: Tatsächlich brauche ich nochmal kurz....
31.03.2005 20:33:08
ransi


      
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


Anzeige
Noch nicht ganz!
01.04.2005 06:52:10
Daniel
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
AW: Noch nicht ganz!
01.04.2005 09:36:57
ransi


      
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


Anzeige
AW: Noch nicht ganz!
01.04.2005 21:08:48
Daniel
Hallo ransi,
vielen Dank für die super Arbeit!
Du hast mir sehr geholfen. Danke.
Grüße und schönes Wochenende,
Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige