Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1348to1352
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
Feld kopieren mit Logik
21.02.2014 14:22:32
Tom
Hy Freunde!
Folgendes Excel Bsp:
Release | Liste | Nummer |Quelle | Bearbeiter
DEPT 2.3.4.3 | Batchänderung | 47112 |Kopie V | Thomas
ROER 6.4.0.0 | Batchänderung | 74762 |Kopie V |
ROER 6.4.0.0 | Inbetriebnahme | 74762 |Kopie V | Clemens
ROER 6.4.0.0 | Mussschrit | 74762 |Kopie V |
ROER 6.4.0.0 | CR | 74762 |Kopie V |
ROER 6.4.0.0 | CR | 75001 |Depmp | Karin
In meinem Excel gibts ca 1000e Zeilen die Unterschiedlich Elemente.
Es geht um die Befüllung leerer Zellen in der Spalte "Bearbeiter"
=> Wenn die Werte in den Zellen der Spalte "Nummer" und Zellen in der Spalte "Quelle" gleich sind und es einen Bearbeiter da drinnen gibt, dann soll dieser auf alle zutreffenden Felder kopiert werden.
=> Es kann aber auch sein, dass im Felder "Bearbeiter" nie was drinne steht, dann soll das auch so bleiben
Bsp von oben => nun das Ergebnis:
Release | Liste | Nummer |Quelle | Bearbeiter
DEPT 2.3.4.3 | Batchänderung | 47112 |Kopie V | Thomas
ROER 6.4.0.0 | Batchänderung | 74762 |Kopie V | Clemens
ROER 6.4.0.0 | Inbetriebnahme | 74762 |Kopie V | Clemens
ROER 6.4.0.0 | Mussschrit | 74762 |Kopie V | Clemens
ROER 6.4.0.0 | CR | 74762 |Kopie V | Clemens
ROER 6.4.0.0 | CR | 75001 |Depmp | Karin
Folgenden CODE hab ich zz, jedoch nehm ich immer den ersten Vorkommenden Namen im Feld und ü _ berschreib mir so die anderen Felder (falls das genommenen Feld leer ist) - :(

Private Sub Bearbeiter()
Dim intZaehler1 As Integer
Dim intZaehler2 As Integer
Dim lngLZeile As Long
Dim strQuelle As String
Dim strBearbeiter As String
Dim strBatch As String
Dim strInbe As String
Dim strMuss As String
Dim strCR As String
Dim lngNummer As Long
strBatch = "Batchänderung"
strInbe = "Inbetriebnahmeschritt"
strMuss = "Mussschritt"
strCR = "CR"
lngLZeile = Worksheets("TODO").Cells(Rows.Count, 1).End(xlUp).Row
For intZaehler1 = 2 To lngLZeile
Select Case Cells(intZaehler1, 2).Value
Case strBatch
strBearbeiter = Cells(intZaehler1, 5).Value
lngNummer = Cells(intZaehler1, 3).Value
For intZaehler2 = 2 To lngLZeile
Select Case Cells(intZaehler2, 3).Value
Case lngNummer
If Cells(intZaehler2, 2).Value = strBatch Or Cells(intZaehler2, 2). _
Value = strInbe Or Cells(intZaehler2, 2).Value = strMuss Or Cells(intZaehler2, 2).Value = strCR  _
_
Then
Cells(intZaehler2, 5).Value = strBearbeiter
End If
End Select
Next
Case strInbe
strBearbeiter = Cells(intZaehler1, 5).Value
lngNummer = Cells(intZaehler1, 3).Value
For intZaehler2 = 2 To lngLZeile
Select Case Cells(intZaehler2, 3).Value
Case lngNummer
If Cells(intZaehler2, 2).Value = strBatch Or Cells(intZaehler2, 2). _
Value = strInbe Or Cells(intZaehler2, 2).Value = strMuss Or Cells(intZaehler2, 2).Value = strCR  _
_
Then
Cells(intZaehler2, 5).Value = strBearbeiter
End If
End Select
Next
Case strMuss
strBearbeiter = Cells(intZaehler1, 5).Value
'Call MsgBox(" " & Cells(intZaehler1, 5).Value)
lngNummer = Cells(intZaehler1, 3).Value
For intZaehler2 = 2 To lngLZeile
Select Case Cells(intZaehler2, 3).Value
Case lngNummer
If Cells(intZaehler2, 2).Value = strBatch Or Cells(intZaehler2, 2). _
Value = strInbe Or Cells(intZaehler2, 2).Value = strMuss Or Cells(intZaehler2, 2).Value = strCR  _
_
Then
If Len(Cells(intZaehler2, 5).Value) = 0 Then
Cells(intZaehler2, 5).Value = strBearbeiter
End If
End If
End Select
Next
End Select
Next
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Feld kopieren mit Logik
21.02.2014 15:49:41
Christian
Hallo,
eine Möglickeit:
In einem ersten Durchlauf:
Wenn im Feld Bearbeiter ein Eintrag vorhanden ist, dann die Einträge aus C und D jeder Zeile zusammen setzen und als Key von Schlüssel-Werte-Paaren in ein Dictionary schreiben. Die zugehörigen Werte sind die Bearbeiter.
In einem zweiten Durchlauf:
Wenn ein Schlüssel (zusammengesetzt aus C&D) existiert, dann in Spalte E den zugehörigen Wert (=Bearbeiter) schreiben.
Fertig - keine Fallunterscheidung und keine verschachtelten Schleifen.
Gruß
Christian

AW: Feld kopieren mit Logik
24.02.2014 07:48:43
Tom
Hy,
ich hab bis dato noch nichts mit Keys und Schlüsselwortpaaren entwickelt bzw. davon nichts gehört.
Wie muss ich dies in meinem Fall konkret anwenden?
lg

Anzeige
AW: Feld kopieren mit Logik
24.02.2014 18:04:23
Christian
Hallo Tom,
das Dictionary Objekt initieren:

Dim objDic As Object
Set objDic = CreateObject("Scripting.Dictionary")

im ersten Durchlauf:
nachdem du den Key zusammengesetzt hast:

objDic(strKey) = .Cells(i, 5)

In zweiten Durchlauf:
auch wieder den Key zusammensetzen und mit
If objDic.Exists(strKey) Then
.Cells(i, 5) = objDic(strKey)
End If
zunächst prüfen, ob ein key existiert und den Wert in Spalte E schreiben.
Am Ende die Variable zurücksetzen:

Set objDic = Nothing

Gruß
Christian
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige