AW: Musterblatt hochladen!
15.01.2013 12:31:16
Klaus
Hi Matthäus,
Was jetzt genau die Logik ist, kann ich gar nicht genau sagen.
Das ist doof. Wenn DU es nicht sagen kannst, kann ICH es nicht programmieren :-)
Die Zeilen 11,16,22 müssten noch eine Zelle nach links verschoben werden
Ich kann wieder nur raten:
in Zeile 11 ist es Spalte C (40h)
in Zeile 16 ist es Spalte A (Nachtschicht)
in Zeile 21 ist es Spalte B (E)
Und statt der Positionsbezeichnung müsste in jeder Zeile die darüberliegende Kostenstelle stehen. (Aber das kann man ja mit Sverweis ziehen).
Gut, dann ignoriere ich das erstmal. Bastelst dir die SVERWEISE rein, wenn die Datei fertig ist.
Ganz grundsätzlich wird pro Zeile nur Kostenstelle, Name, Baujahre (also diese 1 oder 0) und die ID ganz hinten. Alle anderen Angaben (wie bspw. Abteilung) werden nicht gebraucht.
Mit der Information kann ich leider nichts anfangen, da ja pro Zelle nicht bekannt ist was in der Zelle steht ...
Meine Idee soweit währ:
ich schreibe in eine Extra Tabelle eine "Blacklist" von Begriffen. Bisher umfasst diese die Werte:
"40h", "Nachtschicht", und "E". Alles was auf der Blacklist steht wird gelöscht.
Dann müsstest du das ganze ein paar mal laufen lassen und überprüfen, wenn noch einrückfehler bestehen die Blacklist händisch erweitern.
Ohne definierte Logik dahinter wirst du um "Handarbeit" nicht herumkommen! Aber ich bin zuversichtlich, das wir jene um gute 95% reduzieren können.
Ok, hier kommts:
mach in dem Blatt eine neue Tabelle, nenne diese "Blacklist" (exakt so!).
Schreibe in die Tabelle Blacklist in Spalte A die Begriffe "40h", "Nachtschicht", "E", und "AT" (natürlich jeweils ohne Anführungszeichen)
Dann diesen Code:
Option Explicit
Sub TestGoLeft()
Dim iCols As Integer
Dim lRows As Long
Dim i As Integer
Dim l As Long
Application.ScreenUpdating = False
iCols = ActiveSheet.UsedRange.Columns.Count
lRows = ActiveSheet.UsedRange.Rows.Count
For i = iCols To 1 Step -1
For l = 1 To lRows
If Cells(l, i).Value = "" Then Cells(l, i).Delete Shift:=xlToLeft
If Application.WorksheetFunction.CountIf(Sheets("Blacklist").Columns("A:A"), Cells(l, _
i).Value) > 0 Then Cells(l, i).Delete Shift:=xlToLeft
Next l
Next i
Application.ScreenUpdating = True
End Sub
Ich hab mal screenupdating ausgeschaltet, um das Bildschirmflackern zu verhindern.
Grüße,
Klaus M.vdT.