AW: HURRA !- Jetzt glaube ich wieder an den Osterhasen
06.04.2012 22:35:42
Reinhard
Hallo NoNet,
zunächst mal Danke daß du durch deine Rätselei hier Abwechslung reinbringst :-)
An der Lösung fehlt mir aber was. Möglicherweise hat Frank das einfach durch Ausprobieren gelöst,
was ja okay ist.
Ich wäre aber eher an Vba- oder gar reiner Formellösung interessiert.
Nachfolgend habe ich Code gebastelt der pro H-Zelle alle möglichen E-Zellen auflistet.
Wie man das besser machen könnte würde mich schon interessieren.
Genauso wie man mit dem Ergebnis weiterverfährt. Mir ist schon klar, ich müßte jetzt
im Code nur 25 ineinander verschachtelte For-Schleifen einbauen und das auswerten
lassen, dann habe ich die bzw. alle Lösungen falls es mehrere gibt.
Das habe ich mir dann geschenkt dies zu basteln.
Besonders weil der 1 Platz schon weg war *lächel*
Was mich speziell interessieren würde ist, wie man da ohne 25 For-Schleifen auskommt
und das durch eine rekursive Funktion lösen könnte.
Oder gar völlig anders in Vba an die Sache rangehen könnte.
Natürlich lese ich gerne auch Verbesserungen an meinem Code.
FrOstern
Gruß
Reinhard
Option Explicit
Sub Verstecken()
Dim c, firstAddress, Zei, wks1, Ei(1 To 25)
Dim Zmin, Zmax, Smin, Smax
Zmin = 9
Zmax = 20
Smin = 3
Smax = 12
Worksheets.Add after:=Worksheets(Worksheets.Count)
Set wks1 = ActiveSheet
wks1.UsedRange.ClearContents
With Worksheets("Ostereiernester verstecken").Range("Raetselfeld")
Set c = .Find("H", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Zei = Zei + 1
wks1.Cells(Zei, 1).Value = Split(c.Address, "$")(1) & Format(Split(c.Address, "$")(2), " _
00")
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address firstAddress
End If
wks1.Range("A1:A25").Sort Key1:=wks1.Range("A1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
With wks1
For Zei = 1 To 25
If Range(.Cells(Zei, 1).Value).Offset(-1, 0).Row >= Zmin Then
.Cells(Zei, 2).Value = .Cells(Zei, 2).Value & "#" & Range(.Cells(Zei, 1).Value).Offset(- _
1, 0).Address
End If
If Range(.Cells(Zei, 1).Value).Offset(1, 0).Row = Smin Then
.Cells(Zei, 2).Value = .Cells(Zei, 2).Value & "#" & Range(.Cells(Zei, 1).Value).Offset( _
0, -1).Address
End If
If Range(.Cells(Zei, 1).Value).Offset(0, 1).Column