Servus und Hallo, ich suche nach einer Möglichkeit aus einem
Rechteckigem Feld ein kreisförmiges zu machen. Dafür habe ich die
Adresse des Mittelpunktes des Rechtecks bestimmt und auch den Radius,
der in das Rechteck passen soll. Nun weiß ich aber nicht, wie ich
radial/rund in Excel ausschneiden kann.
Zum besseren Verständnis:
Dabei ist das Rechteck mit Werten gefüllt, diese spielen aber keinerlei
Rolle!
Hat jemand eine Idee, wie das in VBA oder auch mit einfachen Funktionen
zu lösen ist?
Grützi, Siebert
Das hier unten sollte Dein Problem lösen.
Mit bestem Gruß,
Egbert
Sub Makro1()
Dim x0, y0, x1, y1 As Integer
Dim dx, dy As Integer
Dim mx, my As Integer
Dim destx, desty, radius As Integer
Dim i, j, q, r2 As Integer
Dim v
' 16x16 Matrix (C4:R19)
x0 = 3
y0 = 4
x1 = 18
y1 = 19
' destination & radius (AA4...
destx = 27
desty = y0
radius = 5
' delta
dx = (x1 - x0)
dy = (y1 - y0)
mx = dx \ 2
my = dy \ 2
r2 = radius ^ 2
For i = 0 To dy
For j = 0 To dx
Cells(desty + i, destx + j) = "."
Next j
Next i
For i = -radius To radius
q = Sqr(r2 - i ^ 2)
For j = -q To q
v = Cells(y0 + my + j, x0 + mx + i)
Cells(desty + my + j, destx + mx + i) = v
Next j
Next i
End Sub
egbert schrieb:> Das hier unten sollte Dein Problem lösen.
Hallo Egbert, im Voraus schon mal vielen Dank für deine schnelle
Antwort!
Leider bin ich in VBA noch nicht sehr geübt und verstehe den Code nicht
ganz.
So wie ich das verstehe hast du ein 16x16 Rechteck und machst Kreis mit
radius 5 daraus, richtig?
Wenn ich das Makro ausführe, passiert bei mir nichts, was mache ich
falsch?
egbert schrieb:> destx = 27> desty = y0
Was bedeuten diese Zeilen?
siebert schrieb:> egbert schrieb:>> Das hier unten sollte Dein Problem lösen.>> Hallo Egbert, im Voraus schon mal vielen Dank für deine schnelle> Antwort!
Hallo, Siebert.
> Leider bin ich in VBA noch nicht sehr geübt und verstehe den Code nicht> ganz.>> So wie ich das verstehe hast du ein 16x16 Rechteck und machst Kreis mit> radius 5 daraus, richtig?
Ja.
>> Wenn ich das Makro ausführe, passiert bei mir nichts, was mache ich> falsch?
Füge zum Ausprobieren in den Zellen C4...R19 einfach beliebige Werte
ein.
>> egbert schrieb:>> destx = 27>> desty = y0>> Was bedeuten diese Zeilen?
"Destination", d.h. die Zielkoordinaten (hier "AA4") in welche "der
Kreis" aus der Quellmatrix kopiert wird.
Mit bestem Gruß,
Egbert
Sven A. schrieb:> hast du mal geguckt, ob in spalte aa4 was ist?egbert schrieb:>> egbert schrieb:>>> destx = 27>>> desty = y0>>>> Was bedeuten diese Zeilen?>> "Destination", d.h. die Zielkoordinaten (hier "AA4") in welche "der> Kreis" aus der Quellmatrix kopiert wird.
Ah, deswegen habe ich es nicht gesehen. Jetzt funktioniert es und sieht
wirklich super aus!
Wenn ich meinen Durchmesser aus einer Zelle übernehmen möchte, schreibe
ich dann:
radius = Range("A3")
wenn mein Wert in A3 steht?
Bei näherer Betrachtung ist mir hier aufgefallen, dass der Radius aber
nicht wirklich 5 ist.
So habe ich in der obersten Zeile des Kreises 5 vertikale Zellen, in der
untersten nur eine.
Hast du noch eine Idee, wie man dies gleichmäßig lösen kann?
MfG
Stephan G. schrieb:> die aufgabe habe ich meinen teilnehmern früher mal gestellt.
Achso, ich bin weder in der Schule noch in der Uni.
Wenn du die Aufgabe aber gestellt hast, dann hast du bestimmt eine
Lösung ? grins
Eric B. schrieb:> Es geht auch ohne VBA.> Kreis-radius in Sheet1!B1 ausfüllen,> Sheet2 anschauen und staunen ;-)
Hallo Eric, die Lösung gefällt mir eigentlich sehr gut, da der Kreis
einen konstanten Radius aufweist.
Allerdings fehlen mir hier noch 2 wichtige Dinge:
- Kreis aus einem Rechteck ausschneiden
- "Startpunkt" ,also des Kreises festlegen
Kann man diese beiden Punkte so auch realisieren?
MfG Siebert
Du hast die Kreisform ja praktisch erzeugt. In meinem Fall soll der
Kreis aber aus einem vorhanden Rechteck ausgeschnitten werden.
Das heißt:
Ich habe ein Rechteck von A1 bis AZ60
nun soll ein Kreis aus dem Rechteck mit dem Radius x (Z.B. = 10)
ausgeschnitten werden, die Werte außerhalb des Kreises können entweder
gelöscht oder auf einen anderen Wert (z.B. -1) gesetzt werden.
Ansonsten, wie schon gesagt, gefällt mir dies sehr gut.
siebert schrieb:> Kann man diese beiden Punkte so auch realisieren?
...
> Du hast die Kreisform ja praktisch erzeugt. In meinem Fall soll der> Kreis aber aus einem vorhanden Rechteck ausgeschnitten werden.
Dann musst du halt die Eingabe-Parameter und die Formeln entsprechend
anpassen. Ist alles einfache Mathemathik. Viel Erfolg!
Eric B. schrieb:> Dann musst du halt die Eingabe-Parameter und die Formeln entsprechend> anpassen. Ist alles einfache Mathemathik. Viel Erfolg!
Und wie? Das verstehe ich nicht