Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Zellen automatisch ausfüllen





Frage

Hallo! Ich habe in einer Tabelle in der ersten Zeile Postleitzahlen und Postleitzzahlenbereiche zur Auswahl stehen (Zuständigkeiten MA). Die Reihe ist so aufgebaut, dass zuerst immer die 1. Stelle steht und dann jeweils 10 x die ersten beiden Stellen. Also: 0 - 00 - 01 - 02 - ... - 09 - 1 - 10 - 11 - 12 - ... Wenn jetzt ein Mitarbeiter zuständig ist für einen gesamten PLZ-Bereich, z.B. PLZ 6, ist, soll nur die Zelle mit der "6" angekreuzt werden und die folgenden 10 Zellen (60, 61, 62, ..., 69) werden von selbst ausge"x"t... Vielen Dank und Grüße Jones

Antwort 1 von Aliba

Hi Jones,

ich hoffe mal alles richtig verstanden zu haben:

1. In Zeile 1 stehen die Werte:
B1 0
C1 00
D1 01
bis L1 09

Dann in
M1 1
N1 10
O1 11

usw..

In Spalte A hast Du dann wahrscheinlich beginnend in A2 die MA´s stehen.

Ich würde Dir raten, die Anfangszahlen 0-9 in die ersten Spalten zu setzen.
Folgende VOrteile:
1. Du kannst die Formel im Anschluss einfach nach rechts und unten kopieren, ohne die Spalten mit den Einzelziffern auszulassen.
2. Du musst nicht soweit nach rechts scrollen, um das x z.B. unter die 9 zu machen
3. Du kannst die Ziffernreihe 00 bis 99 einfach durch Ziehen nach rechts erzeugen, indem du in L1 0 und in M1 1 schreibst, diese beiden Zellen dann markierst und am Anfasser unten rechts nach rechts bis zur 99 ziehst.

Also ist die Tabelle dann jetzt so aufgebaut:
A1 leer
B1 0
C1 1
D1 2
E1 3
F1 4
G1 5
H1 6
I1 7
J1 8
K1 9
L1 00
M1 01
bis
DG1 99

So nun die Formel in L2:

=WENN(WVERWEIS(GANZZAHL(L$1/10);$B$1:$K$20;ZEILE(A2);0)="x";"x";"")

Diese bis Spalte DG nach rechts und Zeile 20 nach unten kopieren/ziehen.

Sollten mehr als 19 Mitarbeiter benötigt werden, dann K20 ändern in z.B K30, wenn 29 MA benötigt werden. Und die Formel dann eben auch entsprechend weit nach unten ziehen.

CU Aliba



Antwort 2 von JonesM

Hi Aliba (und nigthy), ;)

vielen Dank erst einmal. Das ist schon eimal ein guter Ansatz und ich habe es bereits umgesetzt. Die Datei muss nämlch heute noch auf den Server. :)

Fällt euch noch etwas mittels Makro ein?
Ich habe einmal einen U-Plan erstellt, der mittels einfacher CASE-Anweisung Eintragungen farblich hinterlegt. Etwas in der Art muss doch auch möglich sein, um die Zellen mit Text ("x") auszufüllen, wenn bestimmte Bedingungen ("x" in bestimmter Zelle) erfüllt sind!?!


Sub Worksheet_Change(ByVal Target As Range)

    Select Case UCase(Target.Text)
        Case "Url"
            Target.Interior.ColorIndex = 6
        Case "Leh"
            Target.Interior.ColorIndex = 4
        Case "Glz"
            Target.Interior.ColorIndex = 39
        Case ""
            Target.Interior.ColorIndex = 0
        Case " "
            Target.Interior.ColorIndex = 0
    
        Case Else
    
    End Select
End Sub



Vielen Dank und Grüße
Jones


Antwort 3 von nighty

hi jones :)

hier ein paar varianten :)

gruss nighty

einzufuegen unter alt f11(vbeditor)/projektexplorer/DeineTabelle

bei diesen beispiel wird in zelle A1 ein x durch den text test ersetzt

Private Sub worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And Target.Column = 1 And Target = "x" Then
Target = "test"
End If
End Sub

bei diesen beispiel wird in zelle B2 der text "test1" vorrausgesetzt und ein x im target
und dann durch "test" das target ersetzt

If cells(2,2) = "test1" And Target = "x" Then Target = "test"
End If

bei diesen beispiel wird in zelle B2 der text "test1" vorrausgesetzt und ein x in A1 verlangt,inhalt von A1 dann durch "test" ersetzt

If cells(2,2) = "test1" And Target.Row = 1 And Target.Column = 1 And Target = "x" _
Then Target = "test"

Antwort 4 von JonesM

Hallo!

Habe das Problem jetzt folgendermaßen gelöst:


Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("y3:y200")) Is Nothing Then
Else
Target.Offset(0, 1).Value = "x"
Target.Offset(0, 2).Value = "x"
Target.Offset(0, 3).Value = "x"
Target.Offset(0, 4).Value = "x"
Target.Offset(0, 5).Value = "x"
Target.Offset(0, 6).Value = "x"
Target.Offset(0, 7).Value = "x"
Target.Offset(0, 8).Value = "x"
Target.Offset(0, 9).Value = "x"
Target.Offset(0, 10).Value = "x"
End If
End Sub



Funktioniert auch soweit. Jetzt habe ich aber noch zwei Fragen:

1. Wie kann ich die Else-Anweisung als Schleife darstellen?
2. Was muss ich ändern, damit die X wieder gelöscht werden, wenn ich in der Ursprungsspalte das X lösche?

Vielen Dank und Grüße
Jones



Antwort 5 von nighty

hi jones :)

hier meine variante :)

gruss nighty

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Do
If zaehler1 = 11 Then Exit Do
zaehler1 = zaehler1 + 1
If Target.Value = "x" And Target.Column = 1 Then
Cells(Target.Row, zaehler1) = "x"
Else
Cells(Target.Row, zaehler1) = ""
End If
Loop
Application.EnableEvents = True
End Sub


Antwort 6 von nighty

hi jones :)

korrigiert :)

gruss nighty

Private Sub Worksheet_Change(ByVal Target As Range)
Dim zaehler1
zaehler1 = 24
Application.EnableEvents = False
Do
If zaehler1 = 35 Or Target.Column <> 25 Or Target.Row < 3 Or Target.Row > 200 Then Exit Do
zaehler1 = zaehler1 + 1
If Target.Value = "x" Then
Cells(Target.Row, zaehler1) = "x"
Else
Cells(Target.Row, zaehler1) = ""
End If
Loop
Application.EnableEvents = True
End Sub



Antwort 7 von JonesM

Hallo Nighty!

Du wirst mir so langsam unheimlich! ;-))

Wo kann ich das Bier hinschicken?


Vielen Dank und Grüße
Jones