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

Intersect - Spalten herausnehmen

Intersect - Spalten herausnehmen
12.05.2014 12:25:51
Arthur
Hallo Forum.
Über Intersect finde ich variabel diejenigen Zellen, mit denen weitergearbeitet werden soll - beinahe jedenfalls, denn ein paar Spalten dürfen nicht genutzt werden.
Gibt es eine elegante Möglichkeit aus einem Range bestimmte Spalten herauszunehmen; quasi ein negierendes Intersect? Die Spalten werden dynamisch ermittelt, weswegen keine 'harte' Programmierung erfolgen kann.
Beispiel: Ein einem Arbeitsblatt soll die Schnittmenge der Zeilen 20:30 mit Spalten B:G+X:Z ausgewählt werden. Aus dieser Auswahl muss bspw. Spalte E entfernt werden.
Sub intsec()
Dim oRng As Range
' ist
Set oRng = Intersect(Range("20:30"), Range("B:G,L:O"))
oRng.Select
' zum Vergleich
Set oRng = Intersect(Range("20:30"), Range("B:D,F:G,L:O"))
oRng.Select
' gesucht, so etwas wie ...
'Set oRng = Intersect(Range("20:30"), Range("B:G,L:O"), not(Range("E:E"))
'oRng.Select
End Sub

Danke für die Ideen.
Gruß, Arthur

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Intersect - Spalten herausnehmen
12.05.2014 13:12:38
bst
Hi Arthur,
versuche vielleicht mal so etwas.
Siehe ggf dazu http://www.online-excel.de/fom/fo_read.php?f=1&bzh=-1&h=43489&ao=1
cu, Bernd
--
Option Explicit
Sub intsec()
Dim oRng As Range
' so
Set oRng = Intersect(Range("20:30"), RangeDiff(Range("B:G,L:O"), Range("E:E")))
oRng.Select
' oder - deutlich schneller - so
Set oRng = RangeDiff(Intersect(Range("20:30"), Range("B:G,L:O")), Range("E:E"))
oRng.Select
End Sub
' bestimmt alle Zellen aus r1 die nicht in r2 liegen
' benutzt das temporäre Tabellenblatt TEMP von ThisWorkbook
Public Function RangeDiff(ByVal r1 As Range, ByVal r2 As Range) As Range
If Not r1.Parent Is r2.Parent Then Exit Function
With ThisWorkbook.Worksheets("Temp")
.UsedRange.Clear
.Range(r1.Address).Value = 1
.Range(r2.Address).ClearContents
Set RangeDiff = r1.Parent.Range(.UsedRange.SpecialCells(xlCellTypeConstants).Address)
.UsedRange.Clear
End With
ThisWorkbook.Saved = True
End Function

Anzeige
AW: Intersect - Spalten herausnehmen
12.05.2014 14:20:17
Arthur
Hallo Bernd.
Wirr. Mit kopieren und Löschen kann ich leider nicht arbeiten. Einzelne Zellen zu betrachten dauert zu lange. Da die Restriktion spaltenorientiert ist werde ich mir wohl ein Coding einfallen lassen. Doof, dass es da keine 'RangeDiff'-Funktion gibt, keine Intersect(RangeA,-RangeB).
Dennoch danke.
Gruß, Arthur

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige