Microsoft Excel

Herbers Excel/VBA-Archiv

Schleife If ...and ... then

Betrifft: Schleife If ...and ... then von: rinkadink
Geschrieben am: 12.09.2014 13:21:31

Tach Zusammen,

ich komme leider nicht wieter und hoffe jemand kann mir (noch) helfen :)

Ich habe TB 1 + TB 2

In TB 1 Spalte C stehen Werte z.b. 4
In TB 2 Spalte B, C und D stehen Werte z.b. B1 = 1 + C1 = 10 // D1 = XXX

Mein VBA sollte nun eigentlich über herausfinden, dass 4 eine Zahl ist die zwischen 1 und 10 liegt und dann D1 aus TB2 nach D1 in TB1 kopieren.

Habe diesen VBA versucht zu nutzen jedoch leider ohne Erfolg :(

Sub testing()


    Dim LoI As Long ' 1. Schleifenvariable
    Dim LoJ As Long ' 2. Schleifenvariable
    Dim LoLetzte1 As Long ' Variable letzte Zeile in Spalte C TB1
    Dim LoLetzte2 As Long ' Variable letzte Zeile in Spalte B TB2
    Dim Loletzte3 As Long ' Variable letzte Zeile in Tabelle3
    Application.ScreenUpdating = False ' Bildschirmaktualisierung aus
    With Worksheets("Tabelle1") ' letzte Zeile in Spalte C Tabelle1
        LoLetzte1 = IIf(IsEmpty(.Cells(Rows.Count, 3)), _
            .Cells(Rows.Count, 3).End(xlUp).Row, .Rows.Count)
    End With
    With Worksheets("Tabelle2") ' letzte Zeile in Spalte B Tabelle2
        LoLetzte2 = IIf(IsEmpty(.Cells(Rows.Count, 2)), _
            .Cells(Rows.Count, 2).End(xlUp).Row, .Rows.Count)
    End With
    For LoI = 1 To LoLetzte1 ' 1. Schleife alle Werte Spalte C
     
            If Worksheets("Tabelle1").Cells(LoI, 3) >= Worksheets("Tabelle2").Cells(LoI, 2) And  _
 _
Worksheets("Tabelle1").Cells(LoI, 3) <= Worksheets("Tabelle2").Cells(LoI, 3) Then
            
            Worksheets("Tabelle1").Cells(LoI, 4).Value = Worksheets("Tabelle2").Cells(LoI, 5).  _
_
Value
            

End If


Next
End Sub

  

Betrifft: AW: Schleife If ...and ... then von: rinkadink
Geschrieben am: 12.09.2014 13:22:54

https://www.herber.de/bbs/user/92595.xlsm


Testdatei


  

Betrifft: AW: Schleife If ...and ... then von: Daniel
Geschrieben am: 12.09.2014 13:40:14

Hi

wenn du TB2 nach Spalte B aufsteigend sortierst müsste sich dein Wunsch ohne VBA mit folgender Formel erfüllen lassen (Formel für den Fall, dass die Werte in Zeile 1 beginnen):

=Wenn(SVerweis(C1;TB2!B:C;2;Wahr)>=C1;SVerweis(C1;TB2!B:D;3;Wahr);"")
Gruß Daniel


  

Betrifft: AW: Schleife If ...and ... then von: rinkadink
Geschrieben am: 12.09.2014 13:51:32

Hallo Daniel,

danke das du versuchst zu helfen :)
Hat leider nicht funtioniert.

Aber liegt vermutlich auch daran, dass ich kauderwelsch geschrieben habe bzw. so schreibe wie man denkt wenn man versucht sich in einen VBA hineinzuversetzen.

Nun im TB 1 steht eine Zahl in Spalte C
Diese Zahl ist nicht im TB 2 enthalten

Im TB 2 sind Ranges z.b. C2 = 10000 und D2 = 11000
Wenn jetzt in TB1 die Zahl 10500 steht müsste es erkennen
das es eine Zahl ist die zwischen 10000 und 11000 liegt.

Deswegen habe ich versucht es über eine if bedingung zu machen die gekoppelt ist. größer als c2 und kleiner als d2.

Leider beginnen die Werte nicht in Zeile 1

Habe hier eine Beispieldatei hochgeladen.

Könntest du mir an dieser Beispieldatei zeigen wie ich das machen muß ? ( also für Dummy's :) )


  

Betrifft: AW: Schleife If ...and ... then von: Daniel
Geschrieben am: 12.09.2014 14:14:14

Hi
kuckst du hier: https://www.herber.de/bbs/user/92597.xlsm

1. Zahlen, die als Texte formatiert sind, in Zahlen umwandeln (mit Text-In-Spalten)
2. Tabelle2 aufsteigend sortierten
3. Werte wie beschrieben mit SVerweis auslesen

Gruß Daniel


  

Betrifft: AW: Schleife If ...and ... then von: rinkadink
Geschrieben am: 12.09.2014 14:18:36

Danke, dir einen guten Start ins Wochenende.


  

Betrifft: AW: Schleife If ...and ... then von: rinkadink
Geschrieben am: 12.09.2014 14:40:48

Hi Daniel,

ich muss doch nochmal eine Fragen loswerden.

Wenn in TB1 die Zahlen jetzt aus einer Formel berechnet werden erkennt er das nicht mit dem SVERWEIS.
Geht allerdings wenn ich die lösche und dann einfüge mit Werten.

Geht das nicht auch mit Zahlen die als Formel in der Zelle stehen ?


  

Betrifft: AW: Schleife If ...and ... then von: Daniel
Geschrieben am: 12.09.2014 15:51:36

Hi
deine Formel spuckt Texte aus.
der SVerweis unterscheidet aber genau zwischen Text und Zahl, dh "1" ist für ihn nicht das gleiche wie 1.
dh du musst darauf achten dass in der Suchmatrix das gleiche steht wie in den Suchwerten.

du kannst in der Formel die Texte gleich in Zahlen umwandeln, indem du entweder die WERT-Funktion anwendest, oder eine Rechenoperation mit dem Text ausführst (mit 1 multiplizieren oder 0 addieren, oder 2x mit -1 multiplizieren)

=Wert(DeineFormel())
=1*DeineFormel()
=0+DeineFormel()
=--DeineFormel()
Gruß Daniel


  

Betrifft: AW: Schleife If ...and ... then von: Adis
Geschrieben am: 12.09.2014 16:06:39

Hallo

ich habe das Makro in einer Excel Datei getestet und bekam kein Ergebnis. Das macht e mich stutzig!
Der Fehler liegt in diesem Code: Im Original Code wird der Wert aus -Cells(LoI, 5).Value- geladen
Die Spalte war bei mir leer. Somit wurde auch kein Wert kopiert. Bitte Code aendern und testen!

Worksheets("Tabelle1").Cells(LoI, 4).Value = Worksheets("Tabelle2").Cells(LoI, 4).Value

Gruss Adis


 

Beiträge aus den Excel-Beispielen zum Thema "Schleife If ...and ... then "