Excel: Zellen löschen wenn woanders selbiger Inhalt steht

  • #1
S

Sordon

Bekanntes Mitglied
Themenersteller
Dabei seit
12.10.2004
Beiträge
128
Reaktionspunkte
0
Ort
NRW|Ahaus
Hallo

Es geht um eine Tabelle, in der die Spalten C-I mit Namen gefüllt sind, bis zur Zeile 1.000.

Jetzt werden in den Spalten K-Q ebenfalls Namen eingetragen. Sollte in Name, der in den Spalten K-Q eingegeben worden ist, in der selben Zeile auch in den Spalten C-I vorhanden sein, dann soll die Zelle geleert werden (die Zelle in einer der Spalten C-I).

Läuft im Prinzip ab wie beim Wählen einer Fußballmannschaft auf dem Bolzplatz. Spalten C-I befinden sich die Spieler, die noch gewählt werden können, und in den Spalten K-Q werden nach und nach die Spieler reingewählt.

Hoffe das war verständlich :)
 
  • #2
Hallo Sordon,

zur Lösung folgendes:

folgenden Code in ein Modul in der Arbeitsmappe packen:
Code:
Option Explicit

'Excel: Zellen löschen wenn woanders selbiger Inhalt steht
' am: Heute um 11:29:04
'--------------------------------------------------------------------------------
'Hallo
'Es geht um eine Tabelle, in der die Spalten C-I mit Namen gefüllt sind, bis zur Zeile 1.000.
'Jetzt werden in den Spalten K-Q ebenfalls Namen eingetragen.
'Sollte in Name, der in den Spalten K-Q eingegeben worden ist,
'in der selben Zeile auch in den Spalten C-I vorhanden sein,
'dann soll die Zelle geleert werden (die Zelle in einer der Spalten C-I).

'Läuft im Prinzip ab wie beim Wählen einer Fußballmannschaft auf dem Bolzplatz.
'Spalten C-I befinden sich die Spieler, die noch gewählt werden können, _
'und in den Spalten K-Q werden nach und nach die Spieler reingewählt.
'--------------------------------------------------------------------------------

'Na denn :-)

'zu überwachender Bereich:
Const c_UEBEREICH_ERSTEZEILE = 1
Const c_UEBEREICH_LETZTEZEILE = 1000
Const c_UEBEREICH_ERSTESPALTE = K
Const c_UEBEREICH_LETZTESPALTE = Q
Public Const c_UEBERWACHUNGSBEREICH = _
             c_UEBEREICH_ERSTESPALTE & c_UEBEREICH_ERSTEZEILE & : & _
             c_UEBEREICH_LETZTESPALTE & c_UEBEREICH_LETZTEZEILE

'pro Zeile zu prüfender Bereich
Const c_PRUEFBEREICH_ERSTESPALTE = C
Const c_PRUEFBEREICH_LETZTESPALTE = I

Function NamenAusPruefBereichEntfernenWennImUeBereich(ws As Worksheet, Target As Range)

  Dim r As Range, Zelle As Range, pr As Range, Zelle2 As Range
  
 ->Änderung im überwachten bereich ?
  Set r = Application.Intersect(ws.Range(c_UEBERWACHUNGSBEREICH), Target)
  If Not r Is Nothing Then
    For Each Zelle In r
      If Zelle.Value <>  Then
        Set pr = ws.Range(c_PRUEFBEREICH_ERSTESPALTE & Zelle.Row & : & _
                          c_PRUEFBEREICH_LETZTESPALTE & Zelle.Row)
        Do
         ->Name im zu pruefenden Bereich vorhanden suchen
          Set Zelle2 = pr.Find(What:=Zelle.Value, LookIn:=xlValues, LookAt:=xlWhole)
          If Zelle2 Is Nothing Then Exit Do
         ->Name im zu pruefenden Bereich löschen
          Application.EnableEvents = False
          Zelle2.Value = 
          Application.EnableEvents = True
        Loop
      End If
    Next
  End If
  
AUFRAEUMEN:
  Set r = Nothing: Set Zelle = Nothing: Set Zelle2 = Nothing: Set pr = Nothing
End Function

Jetzt muß nur das Change-Ereignis diese Funktion  aufrufen. Dazu packe diesen Code in die Code-Seite des betreffenden Arbeitsblattes:
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  Call NamenAusPruefBereichEntfernenWennImUeBereich(Me, Target)
End Sub
Gruß Matjes :)
 
Thema:

Excel: Zellen löschen wenn woanders selbiger Inhalt steht

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben