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

Subtraktion von Bereichen

Subtraktion von Bereichen
06.09.2022 07:39:28
Bereichen
Ich möchte einen äußerlich rechteckigen Range erzeugen, zu welchem ein inneres Rechteck nicht dazu gehört.
Also nach meinem primitiven Verständnis R3 = R1 - R2
Leider wird diese Notation nicht angenommen. Ich habe bisher die funktionierende Lösung, dass ich Ranges für die 4 Randbereiche erzeuge und diese dann per Union zusammenfasse. Aber das muss doch im obigen Sinne auch einfacher gehen.

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Subtraktion von Bereichen
06.09.2022 08:14:31
Bereichen
Hallo + Tschüss is zu viel Schreibaufwand? Wie soll das dann nur erst mal mit größerer Programmierung funktionieren?
von dir eine Bsp-Datei per Upload?
Was genau meinst du mit "Range"?
In Excel ist Range ein Zellbereich.
Aber du möchtest vielleicht, wenn ich richtig verstanden habe, innere Fläche von äußerer Fläche subtrahieren, oder?
Nein? Was möchtest du denn?
AW: Subtraktion von Bereichen
06.09.2022 08:24:01
Bereichen
Hi
Meines wissen nach gibt es keinen Befehl, der Mengen "abziehen" kann.
Ich kenne nur Intersect und Union.
Eine andere Möglichkeit wäre, wenn R1 und R2 gegeben sind:

For each Zelle in R1
If Intersect(R2; Zelle) is nothing then
Set R3 = Union(R3, Zelle)
End if
Next
Das bildet die Differenzmenge von 2 beliebigen Ranges.
Gruß Daniel
Anzeige
AW: Subtraktion von Bereichen
06.09.2022 08:34:16
Bereichen
Hallo
so?

Sub dgfgf()
Dim R1 As Range, R2 As Range, R3 As Range, Z As Range
'Beispiel
Set R1 = Range("F4:J14")
Set R2 = Range("G7:H8")
For Each Z In R1
If Intersect(R2, Z) Is Nothing Then
If R3.Count = 0 Then
Set R3 = Z
Else
Set R3 = Union(R3, Z)
End If
End If
Next
R3.Select 'zum testen
End Sub
LG UweD
Upps
06.09.2022 08:43:52
UweD
Da kam noch ein Fehler.

Sub dgfgf()
Dim R1 As Range, R2 As Range, R3 As Range, Z As Range
'Beispiel
Set R1 = Range("F4:J14")
Set R2 = Range("G7:H8")
For Each Z In R1
If Intersect(R2, Z) Is Nothing Then
If R3 Is Nothing Then
Set R3 = Z
Else
Set R3 = Union(R3, Z)
End If
End If
Next
R3.Select 'zum testen
End Sub

Anzeige
mach mal
06.09.2022 10:28:51
Rudi
Set R1=Range("a1:abc100000") und geh einen Eimer Kaffee trinken.
;-)
Gruß
Rudi
AW: Subtraktion von Bereichen
06.09.2022 09:34:05
Bereichen
Hallo,
sofern du Werte addieren, subtrahieren etc. willst dann gib den Bereichen einen Namen (über Namensmanager).
Dann kannst du subtrahieren. (s. Mappe)
Gruß Sigi
https://www.herber.de/bbs/user/154992.xlsx
AW: Subtraktion von Bereichen
06.09.2022 10:59:02
Bereichen
Danke für Eure Mitwirkung. Mehrere Vorschläge funktionieren halt teilweise auf Zellebene. Das sieht sehr danach aus, dass es keine kurze und elegante Lösung für das Problem gibt.
Bei meinem Problem gehr es auch nicht um Zell-Inhalte (Werte), sondern ich möchte diesen (Rahmen-)Bereich für .Protect ... nutzen. Der Rahmen soll halt geschützt sein, während der rechteckige Inhalt editiert werden kann. Das sollte übrigens gar kein so ungewöhnlicher Bedarf sein.
Userbild
Und da sieht es bis jetzt so aus, dass im einfachsten Fall 4 Ranges benötigt werden, die sich dann per Union zu diesem 'Bilderrahmen' zusammenfügen lassen. Oder bietet jemand etwas in der Richtung R3 = R1 - R2?
Ich werde nochmal die Verwendung von INTERSECT unter die Lupe nehmen.
Anzeige
AW: Subtraktion von Bereichen
06.09.2022 11:40:45
Bereichen
Hallo,
und warum nicht einfach
R1.Locked=true
R2.Locked=false
?
Gruß
Rudi
AW: Subtraktion von Bereichen
06.09.2022 12:35:52
Bereichen
Hallo,
das war die Lösung:

R1.Locked=true
R2.Locked=false
In der endgültigen Form seiht sie so aus:

  Range(Cells(EZ_WO - 8, LS_WO - 8), Cells(EZ_WO - 3, LS_WO - 2)).Select  'Gelber Bereich
Selection.Locked = True
Range(Cells(EZ_WO - 7, LS_WO - 7), Cells(EZ_WO - 5, LS_WO - 6)).Select  'Weißer Bereich
Selection.Locked = False
Vielen Dank !!!
AUA !!!
06.09.2022 12:47:06
Oberschlumpf
bist du mit VBA = GUT wirklich sicher?
Sorry, aber lass doch bitte SELECT weg!, wenns nich erforderlich is!
Anzeige
AW: AUA !!!
06.09.2022 16:05:13
Gert
Selbstvertändlich könnte die Selektion entfallen, aber sie verfolgt in diesem Fall einen konkreten Zweck. Aus der Schattierung lässt sich optisch leicht erkennen, ob die in diesem Fall etwas komplizierter berechneten Adressen richtig eingegeben sind. Unangenehm, wenn sich in den Adress-Variablen kleine Fehler verstecken. Das ganze kommt auch noch im Code mehrfach ähnlich vor. Danke noch mal.
okayyyyy!!!
06.09.2022 18:34:56
Oberschlumpf
Hi Gert
a) ich hab deine Begründung voll und ganz verstanden + kann das Ganze auch nachvollziehen UND....vielleicht würde (jetzt) in so einem Fall auch ich SELECT verwenden, wenn es sinnvoll ist, einen, wie auch immer, geänderten Zellbereich optisch anders darzustellen - und wenns eben nur dieser Auswahlschatten ist
(deine Idee ist nicht sooo schlecht)
b) noch wichtiger als a), finde ich
Ich möchte mich unter Beachtung von a) bei dir für meine leider doch etwas arrogante Art der Formulierung in meiner AUA-Antwort entschuldigen!
Ciao
Thorsten
Anzeige
AW: okayyyyy!!!
06.09.2022 19:55:31
Gert
Hallo Thorsten,
ich habe in den letzten 53 Jahren in rund einem Dutzend Programmiersprachen entwickelt. Allein für eine ehemalige Tochter der seinerzeitigen Frankfurter Firma Lurgi habe ich ein Volumen von 500.000 Quellzeilen an Datenbank-Software entwickelt. In meiner Altersklasse (82) kenne ich niemand, der auch nur annähernd so aktiv ist.
Die zur Dikussion stehende Excel-Lösung dient übrigens der privaten Verwaltung meiner Finanzen.
Nochmals vielen Dank für Deine Unterstützung
Gruß Gert.
AW: AUA !!!
06.09.2022 19:03:22
Daniel
man kann ja fürs erste in der Programmierung den Zellbereich zuerst selekieren, dann aber für die Befehlsausführung nicht .Select verwenden, sondern die (möglichst vollständige) direkte Referenzierung.
Dann man man in der Testphase im Einzelstep sehen, was als nächstes bearbeitet wird, und wenn der Code dann funktioniert, kann man die zeilen mit .dem Select einfach löschen oder auskommentieren.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige