Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1176to1180
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

Zellen durchsuchen (Excel)

Zellen durchsuchen (Excel)
Uwe
Hallo zusammen,
wer kann mir bei u.g. Problem behilflich sein? Leider reichen meine VBA Kenntnisse dafür nicht aus…
Also, ich möchte aus Sheet 1 den Wert (Kalenderwoche) aus Zelle C3 im Sheet 2 suchen. Bei Übereinstimmung sollen die Datumswerte eine Zeile tiefer ausgelesen werden und in Sheet 1 in den Bereich C5:G5 geschrieben werden.
Bereich zum auslesen:
KW 1
4. Jan. 5. Jan. 6. Jan. 7. Jan. 8. Jan.
.
Zudem soll er sich den Bereich unter der gefunden Kalenderwoche in Sheet 2 merken (das wäre bspw. B4:F131 für KW 1) und dann in dem Bereich alle Übereinstimmungen mit dem Wert C2 aus Sheet 1 suchen und die Werte aus Spalte A (Sheet2) für das jeweilige Datum (Spalte unter der Kalenderwoche) in den Bereich B6:G16 im Sheet 1 schreiben.
Gruß
Uwe

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zellen durchsuchen (Excel)
09.09.2010 22:33:06
fcs
Hallo Uwe,
würdest du bitte eine Beispieldatei mit Daten für 3 KWs hochladen - sensible Daten ggf. anonymisiert.
Das macht es wesentlich leichter dir zu helfen.
Gruß
Franz
eine VBA-Variante ...
10.09.2010 10:46:25
Matthias
Hallo Uwe
hier mal mit einer MsgBox als Ausgabe
Das lässt sich dann auch in die entsprechenden Zellen schreiben
Teste das aber erstmal , ob es so ist wie Du es brauchst.
https://www.herber.de/bbs/user/71462.xls
Ich bin aber fast sicher hier kommt noch ein Vorschlag mit einer reinen Formel-Lösung
Gruß Matthias
Anzeige
AW: eine VBA-Variante ...
10.09.2010 12:39:35
Uwe
Hallo Matthias,
vielen Dank, das funktioniert soweit. Was mir leider nicht klar ist,
wie ich die Werte nun Spalte für Spalte und Zeile für Zeile auslesen kann
und dann in den Bereich B6:F16 sauber schreibe?
Für die K_W kann man ja sagen, dass die Spalte immer ((KW-Zahl * 5) - 3) ist.
(KW1 = Spalte 2, KW2 = Spalte 7, KW3 = Spalte 12, usw. bis KW26)
Select Case Range("K_W").Value
Case Is = "KW 1"
myCol = 2
Case Is = "KW 2"
myCol = 7
End Select
If myCol 0 Then
With Worksheets("Maske1")
For myzl = 0 To 4 'Mo=0,Di=1,Mi=2,Do=3,Fr=4
For Each rngC In .Range(.Cells(4, myCol + myzl), .Cells(11, myCol + myzl))
If rngC.Value = Range("Mitarbeiter").Value Then
Worksheets("Maske2").Range("B6").Value = .Cells(rngC.Row, 1).Value
' MsgBox .Cells(rngC.Row, 1).Value, vbInformation, "am " & .Cells(2, myCol + myzl).Value & " für " & Range("Mitarbeiter").Value
End If
Next
Next myzl
End With
End If
Gruß
Uwe
Anzeige
versuch Dich mal einzudenken ...
10.09.2010 19:15:53
Matthias
Hallo Uwe
https://www.herber.de/bbs/user/71474.xls
Blatt ist ohne PW geschützt um die Formeln zu schützen.
Wenn Du etwas nicht verstehst, frag einfach nochmal nach
Gruß Matthias
kleiner Nachtrag ...
11.09.2010 09:54:38
Matthias
Hallo Uwe
betrifft meine hochgeladenen Datei im letzten Beitrag:
ersetze bitte diese Zeile:
If myCol  0 Then
durch diese Zeile:
If myCol  0 And Range("Mitarbeiter")  "" Then
damit bei leerer Zelle des MA nichts eingetragen wird.


Wenn Du Franz sein Beispiel benutzen willst
solltest Du auch die Zellen des MA und der KW vorher abfragen.
Folgendes bezieht sich auf den Vorschlag von Franz(fcs)
wenn MA1 und KW1 -> alles ok
wenn MA1 und KW ist leer (Inhalt gelöscht) ->wird das Datum von 4. auf 5. geändert !
wenn MA =leer und KW1 steht überall (Aufgabe 6,7,8)
wenn MA und KW (beide leer) ->wird das Datum von 4. auf 5. geändert
Du mußt also (auch bei Franz seinem Bsp.) noch die Zellen für MA und KW auf korrekte Einträge prüfen.
Das kannst Du am besten über Daten Gültigkeit regeln.
Gruß und schöWE
Matthias
Anzeige
AW: noch eine VBA-Variante ...
10.09.2010 21:10:17
fcs
Hallo Uwe,
hier eine etwas andere Variante des Codes für die Schaltfläche.
Gruß
Franz
Private Sub cmdIndividualplanung_Click()
Dim wksMaske1 As Worksheet, wksMaske2 As Worksheet
Dim Zeile As Long, Spalte As Long, Zeile2 As Long, Spalte1 As Long
Dim rngNamen As Range
Dim MA_Name As Variant, vKW As Variant
Set wksMaske1 = Worksheets("Maske1")
Set wksMaske2 = Worksheets("Maske2")
Application.ScreenUpdating = False
With wksMaske2
'Altdaten löschen
.Range(.Cells(6, 2), .Cells(16, 6)).ClearContents
'KW und Name merken
vKW = .Cells(3, 3).Value
MA_Name = .Cells(2, 3).Value
Zeile = 5 'Zeilenzähler für Maske2 setzen
End With
With wksMaske1
'Spalte mit Datum des 1.Tags der KW in Zeile 1 von Maske1 suchen
For Spalte = 2 To .Cells(2, .Columns.Count).End(xlToLeft).Column
If .Cells(1, Spalte).Value = vKW Then
Spalte1 = Spalte
Exit For
End If
Next
If Spalte1 = 0 Then
MsgBox "KW """ & vKW & """ nicht gefunden"
Else
'Datums der KW kopieren - nur Werte
.Range(.Cells(2, Spalte1), .Cells(2, Spalte1 + 4)).Copy
wksMaske2.Range("B5:F5").PasteSpecial Paste:=-4163 'xlPasteValues
Application.CutCopyMode = False
'Aufgabenzeilen in Maske1 abarbeiten
For Zeile2 = 4 To .Cells(.Rows.Count, 1).End(xlUp).Row
'Bereich mit den Namen in der Zeile setzen
Set rngNamen = .Range(.Cells(Zeile2, Spalte1), .Cells(Zeile2, Spalte1 + 4))
'Prüfen, ob im Bereich der Mitarbeiter eingetragen ist
If Not rngNamen.Find(What:=MA_Name, LookIn:=xlValues, Lookat:=xlWhole) Is Nothing Then
'Zeilenzähler für Maske1 erhöhen
Zeile = Zeile + 1
'Namen in Zeile für KW vergleichen und ggf. Aufgabe eintragen
For Spalte = 1 To rngNamen.Cells.Count
If rngNamen.Cells(1, Spalte) = MA_Name Then
wksMaske2.Cells(Zeile, Spalte + 1).Value = .Cells(Zeile2, 1)
End If
Next
End If
Next
End If
End With
Range("B5").Select
Application.ScreenUpdating = False
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige