Forum: PC-Programmierung Feld Prüfen in Excel


von m. s. (Gast)


Lesenswert?

Hallo,

ich möchte ein Feld in Excel Prüfen, ob zum Beispiel 5 Mal eine 0 
aneinander gereiht ist. Dabei sollen auch Diagonalen mit einbezogen 
werden.

Das Feld sieht zum Beispiel so aus:
1
Beispiel 1: Fehlerfall, da vertikal 5 Nullen aufeinander folgen
2
3
0 1 1 1 1 
4
0 1 1 1 1
5
0 1 1 1 1
6
0 1 1 1 1
7
0 1 1 1 1
8
9
Beispiel 2: Fehlerfall, da horizontal 5 Nullen aufeinander folgen
10
11
0 0 0 0 0 
12
0 1 1 1 1
13
1 1 1 1 1
14
0 1 1 1 1
15
0 1 1 1 1
16
17
Beispiel 3: Fehlerfall, da diagonal 5 Nullen aufeinander folgen
18
19
0 0 1 1 0 
20
0 0 1 1 1
21
1 1 0 1 1
22
0 1 1 0 1
23
0 1 1 1 0
24
25
Beispiel 4: Alles ok
26
27
0 1 1 1 0
28
1 0 0 1 1
29
0 1 1 1 0
30
1 1 1 0 1
31
0 0 0 1 0
Meine Idee war eigentlich mit Bereich verschieben die Anzahl der Nullen 
mit einem bestimmten Wert zu vergleichen. Wie man im Beispiel 4 aber 
sieht, ist dies nicht möglich. Soweit ich weiß kann Excel auch nicht 
Diagonal vorgehen.

Hat jemand eine Lösungsidee bzw weiß, ob dies Überhaupt machbar ist?
Die Diagonale Komponente muss leider mit rein.

von Wühlhase (Gast)


Lesenswert?

Tja, eigentlich ganz einfach: Lauter Wenn()-Anweisungen benutzen.

Oder vielleicht doch ein VBA-Skript...das macht auch Arbeit, aber 
weniger Schmerzen.

Ist das Feld beliebig groß, oder bleibt es bei 5x5? Was wird das? Eine 
Excel-Variante von vier gewinnt in Excel, da der Chef den 
Internetverkehr auf Browsergames überwacht? (Ich warte ja darauf, das 
jemand mal Bomberman oder ein Flugzeugspiel in Excel realisiert... :D)

von sgd (Gast)


Lesenswert?

5 Summen horizontal,
5 Summen vertikal,
2 Summen diagonal

auf Null prüfen.

von Peter M. (r2d3)


Lesenswert?

Wühlhase schrieb:

> Internetverkehr auf Browsergames überwacht? (Ich warte ja darauf, das
> jemand mal Bomberman oder ein Flugzeugspiel in Excel realisiert... :D)

Schach in Excel mit schönen Spielfiguren macht auch Spass.
Nachdenken muss man nur kurz beim Färben des Spielfelds.

von Wühlhase (Gast)


Lesenswert?

sgd schrieb:
> 5 Summen horizontal,
> 5 Summen vertikal,
> 2 Summen diagonal
Schöne Lösung.

von sgd (Gast)


Lesenswert?

Wühlhase schrieb:
> Schöne Lösung.

Geht bestimmt noch schöner.
Zumindest wäre diese Lösung schnell implementiert.

von Peter M. (r2d3)


Lesenswert?

sgd schrieb:
> Geht bestimmt noch schöner.

Was ist schön?

Elegant wäre eine benutzerdefinierte Excelfunktion, die eine 5x5-Matrix 
nimmt und einen Wahrheitswert zurückgibt.

So schön die sind, haben solche Funktionen bei mir die Neuberechnung 
eines simplen Tabellenblatts immer ausgebremst.

von m. s. (Gast)


Lesenswert?

Wühlhase schrieb:
> Ist das Feld beliebig groß, oder bleibt es bei 5x5?

es sollte beliebig groß sein.

Wühlhase schrieb:
>> 5 Summen horizontal,
>> 5 Summen vertikal,
>> 2 Summen diagonal

klingt schon mal gut, realisiere ich das wie folgt:

A1+B2+C3+D4+E5 als erste diagonale
E1+D2+C3+B4+A4 als zweie diagonale

Wie erweitere ich das auf eine beliebige Anzahl?
Ich müsste da praktisch immer Bereich verschieben nutzen oder?

von Peter M. (r2d3)


Lesenswert?

m. s. schrieb:

> Wie erweitere ich das auf eine beliebige Anzahl?
> Ich müsste da praktisch immer Bereich verschieben nutzen oder?

Ich sehe keine tabellenblattorientierte Lösung, es sei denn eine 
benutzerdefinierte Funktion.

von sgd (Gast)


Lesenswert?

m. s. schrieb:
> Wie erweitere ich das auf eine beliebige Anzahl?

Wird die zu überprüfende Reihe dann auch immer angepasst, also

5x5 -> 5
6x6 -> 6
(...)?

Dann gibt es immer nur diese zusätzlichen zwei Diagonalen
zu den "einfachen" Reihen und Spalten.

Ich würde das dynamisch in VBA lösen.

von Nop (Gast)


Lesenswert?

Ich würde es auch per VBA versuchen, ist finde ich deutlich schneller zu 
realisieren als über tausende WENN() abfragen...

Diagonalabfragen für beleibig große Felder...
Zeile 1 stehen lassen, Zeile 2 um eins nach links verschieben, Zeile 3 
um zwei nach links verschieben... usw
Das gleiche dann noch mit nach rechts verschieben, dann musst du nur 
noch vertikal und horizontal prüfen und das ist wirklich schnell 
erledigt

von X4U (Gast)


Lesenswert?

Nop schrieb:
> als über tausende WENN() abfragen...

Sind doch nur 3.

So aus dem Kopf:

WENN (A1=0; WENN (A2=0 ...
WENN (A1=0; WENN (B1=0 ...
WENN (A1=0; WENN (B2=0 ...

Bei größeren Feldern ist A1 dann eine "relative Adresse" die (in 5er 
Schritten) durchgezählt wird

von Maddin S. (maddin91)


Angehängte Dateien:

Lesenswert?

Moin,

ich fand das Problem interessant darum hab ich mal ne Excel gebastelt. 
Ist vielleicht nicht schön aber es funktioniert.

Für jede Zeile bildest du die Summe über die ensprechende Anzahl der 
Zellen in denen maximal eine 0 vorkommen darf. Dasselbe für Spalten und 
Diagonalen und am Ende guckst du ob in den so enstandenen Matritzen eine 
0 steht. Wenn ja, dann hast du irgendwo deine Zeile/Spalte/Diagonale mit 
den x nullen.

Ist schwer zu erklären darum guck dir einfach mal die Excel an.
Vielleicht hilfts ja.
Ansonsten ist es mit VBA ein 3-Zeiler. (Vielleicht 5 :D )

von m. s. (Gast)


Lesenswert?

Das funktioniert jetzt super!

Vielen Dank!



Meine Überlegung wäre jetzt noch:
Ist es möglich, das ganze so zu ergänzen, dass zusammenhängende Felder 
mit dem Wert 0 gezählt werden, egal ob die horizontal, vertikal oder 
anders zueinander liegen?

Meine Idee dafür wäre, dass ich jedes Feld auf den Wert 0 Prüfe.
Wenn das Feld 0 ist, soll die Zeile-1 Spalte-1, Zeile-1, zeile-1 
Spalte+1,
spalte-1,spalte+1 etc berechnet werden, um die umliegenden felder dann 
auch jeweils auf den wert zu prüfen. Gleichzeitig soll ein Zähler für 
die Maximale Anzahl erreicht werden. ist dieser erreicht, dann soll es 
stoppen.

Ich weiß, dass dieses Vorgehen ein riesen Code für excel wäre, aber es 
wäre interessant.

von Maddin S. (maddin91)


Lesenswert?

Das wird in Excel nichts. Selbst in VBA ist das keine leichte Aufgabe, 
weil du nicht weißt wie groß der Bereich mit zusammenhängenden nullen 
ist.

von Petra (Gast)


Lesenswert?

Hi,

sicher nicht die sauberste Lösung, aber es könnte zum Denken anregen:
1
Sub test()
2
    Dim rng As Range
3
    Set rng = Range("A1")
4
    
5
    Debug.Print ThrewSize(rng)
6
End Sub
7
8
Function ThrewSize(First As Range)
9
    Dim allCols As Range
10
    Dim test As Boolean
11
    
12
    test = True
13
14
    lastCol = First.End(xlToRight).Column
15
    lastRow = First.End(xlDown).Row
16
17
    Set allCols = Range(First, Cells(lastRow, lastCol))
18
19
    'test first row horincontal
20
    For Each hc In Range(First, Cells(First.Row, lastCol)).Cells
21
        If TestVertical(hc, allCols.Rows.Count) Then
22
            test = False
23
            Exit For
24
        End If
25
    Next hc
26
    
27
    'test first col vertical
28
29
    ThrewSize = test
30
End Function
31
32
Function TestVertical(cell, Size As Integer)
33
    Dim test As Boolean
34
    test = True
35
36
    For i = 0 To Size - 1
37
        If cell.Offset(i, 0).Value = 1 Or Not test Then
38
            test = False
39
            Exit For
40
        End If
41
    Next i
42
43
    TestVertical = test
44
End Function

ich habe jetzt nur Horinzontal gemacht...
=> geprüft müssen ja nur (wenn ichs richtig verstanden habe) die erste 
Zeile, die erste Spalte und die beiden Max-Diagonalen...

im Sub test, gibst du die erste Zelle an... daraus kann man dann die 
Matrix erkennen <- egal wie groß... sollte die Matrix nicht Quadratisch 
sein müsste man halt das selbe Spiel für die Diagonalen machen und die 
0er mitzählen... aber Offset(1,1) ist ja jetzt auch keine kunst <- 
ebenso negativ...

Ab jetzt sollte es für jemanden der den VBA-Editor aufbekommt eigentlich 
von alleine gehen... die einzige offene Frage ist geht es evtl. "noch 
eleganter"
=> z.B. Summen Bilden, <- wobei das in den Diagonalen trotzdem auf 
solche for eaches hinauslaufen würde

cheers pet

von X4U (Gast)


Lesenswert?

Maddin S. schrieb:
> Das wird in Excel nichts. Selbst in VBA ist das keine leichte Aufgabe,
> weil du nicht weißt wie groß der Bereich mit zusammenhängenden nullen
> ist.

So als Idee:
Was wäre wenn die Tabelle auf ein zweites Tabellenblatt gespiegelt wird 
wo die Nullen als Einsen und alle anderen Zahlen als minus 1 Million 
erscheinen?

Dann könnte doch die Summe des Bereichs so langen berechnet werden bis 
Sie negativ wird. Das muss man dann vermutlich horizontal und vertikal 
machen.

von Maddin S. (maddin91)


Lesenswert?

Ich habe es jetzt so verstanden, dass gezählt werden soll wie viele 
nullen in dem gesamten Bereich zusammenhängend sind.

0 1 1 0 0
1 0 0 1 1
0 0 1 1 0
1 0 1 0 1
0 0 0 1 0

Hier sind zum Beispiel alle nullen zusammenhängend. Die Ausgabe müsste 
dann die Anzahl der nullen sein also 14. Hab ich das richtig verstanden?

Und wenn man das Beispiel leicht ändert hat man plötzlich zwei Gruppen 
zusammenhängender nullen:

0 1 1 0 0
1 0 0 1 1
1 1 1 1 0
1 0 1 0 1
0 0 0 1 0

5 oben und 7 unten. Denkbar wäre dann eine Ausgabe, dass jede null durch 
die Anzahl der angrenzenden nullen ersetzt wird. also so:

5 1 1 5 5
1 5 5 1 1
1 1 1 1 7
1 7 1 7 1
7 7 7 1 7

von m. s. (Gast)


Lesenswert?

Maddin S. schrieb:
> 5 oben und 7 unten. Denkbar wäre dann eine Ausgabe, dass jede null durch
> die Anzahl der angrenzenden nullen ersetzt wird. also so:
>
> 5 1 1 5 5
> 1 5 5 1 1
> 1 1 1 1 7
> 1 7 1 7 1
> 7 7 7 1 7

Hallo Maddin, das sieht super aus!
Wie hast du das gemacht ?

von m. s. (Gast)


Lesenswert?

X4U schrieb:
> Was wäre wenn die Tabelle auf ein zweites Tabellenblatt gespiegelt wird
> wo die Nullen als Einsen und alle anderen Zahlen als minus 1 Million
> erscheinen?
>
> Dann könnte doch die Summe des Bereichs so langen berechnet werden bis
> Sie negativ wird. Das muss man dann vermutlich horizontal und vertikal
> machen.

Das habe ich nicht ganz verstanden

von m. s. (Gast)


Lesenswert?

Petra schrieb:
> Sub test()
>     Dim rng As Range
>     Set rng = Range("A1")
>
>     Debug.Print ThrewSize(rng)

Danke für deine Mühe Petra. VBA mag ich aber leider gar nicht und es 
sollte automatisch erfolgen :/

von Carl D. (jcw2)


Lesenswert?

m. s. schrieb:
> Petra schrieb:
>> Sub test()
>>     Dim rng As Range
>>     Set rng = Range("A1")
>>
>>     Debug.Print ThrewSize(rng)
>
> Danke für deine Mühe Petra. VBA mag ich aber leider gar nicht und es
> sollte automatisch erfolgen :/

Eine VBA-Funktion läßt sich einfach in einer Formel benutzen. Die wird 
dann, wie alle anderen auch, automatisch berechnet.

von Maddin S. (maddin91)


Lesenswert?

m. s. schrieb:
> Maddin S. schrieb:
>> 5 oben und 7 unten. Denkbar wäre dann eine Ausgabe, dass jede null durch
>> die Anzahl der angrenzenden nullen ersetzt wird. also so:
>>
>> 5 1 1 5 5
>> 1 5 5 1 1
>> 1 1 1 1 7
>> 1 7 1 7 1
>> 7 7 7 1 7
>
> Hallo Maddin, das sieht super aus!
> Wie hast du das gemacht ?

Das war leider nur ein Beispiel wie die Ausgabe aussehen könnte, weil 
ich mir auch nicht sicher war, ob du das so gemeint hast.

Ich hab jetzt auch nochmal längere Zeit nachgedacht und selbst in VBA 
fällt mir keine Lösung für das Problem ein, weil es doch viel komplexer 
ist als ich zunächst dachte. Bin gespannt ob da jemand ne Idee hat.

von Me (Gast)


Lesenswert?

Nochmal die Frage, soll es bei den 5x5 Feldern bleiben oder können die 
sich auch in der Größe unterscheiden (25x25? Oder vielleicht auch nicht 
quadratisch?)?
Und bleibt es auch bei dem Inhalt von 1en und 0en?

Wie genau soll das später in deinem Excel Workbook aussehen? Sind 
mehrere Tabellen auf einem Arbeitsblatt oder nur eine die dann beliebeig 
groß ist?
Ein paar Informationen bräuchten wir schon wenn du eine fertige Datei 
haben möchtest oder zumindes passende Informationen.

Aber der Ansatz mit der Überprüfung ob sich in einem benachbarten Feld 
einen entspechende Zahl befindet würde ich weiter befolgen. Ich denke 
auch nur so lässt sich das sinnvoll "berechnen".
Oder reicht es dir zum Beispiel auch wenn alle 0en eingefärbt werden und 
du sie dann selber zählen müsstest?

von m.s. (Gast)


Lesenswert?

Die Feldgröße darf variabel sein.
Es ist nur eine Tabelle auf einem Arbeitsblatt. Diese hat eine feste 
Größe von 800*600.

Im Prinzip reicht mir die "einfachere Lösung" für ein 5x5 Feld, dann 
kann ich mir den Rest selbst zusammen bauen.
Es steht nur 0 oder 1 in jeder Zeile

von Me (Gast)


Lesenswert?

Also wenn dir das einfärben reichen sollte (musst dann halt selber noch 
die zusamnhänge erkennen und die Blöcke zählen), dann sollte das 
funktionieren:
1
Private Sub test()
2
Dim LetzteZeile As Integer, LetzteSpalte As Integer
3
Dim Matrix() As Variant
4
Dim MatrixZeile As Integer, MatrixSpalte As Integer
5
6
LetzteZeile = ActiveWorkbook.ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
7
LetzteSpalte = ActiveWorkbook.ActiveSheet.Cells(1, 256).End(xlToLeft).Column
8
ReDim Matrix(LetzteZeile, LetzteSpalte)
9
Matrix = ActiveWorkbook.ActiveSheet.Range("A1:" & ActiveSheet.Cells(LetzteZeile, LetzteSpalte).Address(RowAbsolute:=False, ColumnAbsolute:=False)).Value
10
11
MatrixZeile = 1
12
MatrixSpalte = 1
13
For Each element In Matrix
14
    If element = "0" Then
15
        ActiveWorkbook.ActiveSheet.Cells(MatrixZeile, MatrixSpalte).Interior.Color = vbRed
16
    End If
17
    
18
    If MatrixZeile = LetzteZeile Then
19
        MatrixSpalte = MatrixSpalte + 1
20
        MatrixZeile = 0
21
    End If
22
    MatrixZeile = MatrixZeile + 1
23
Next element
24
End Sub

von m.s. (Gast)


Lesenswert?

Danke für deine Antwort!

Leider kenne ich mich mit VBA gar nicht aus, kannst du mir erklären wie 
ich es einfüge und benutze?

MfG

von Me (Gast)


Lesenswert?

Das Programm erkennt aber nicht deine usprüngliche Frage mit fünf 0en in 
Reihe usw.
Sollen es denn immer fünf 0en in Reihe sein oder ändert sich die Zahl 
auch dynamisch mit der Feldgröße?

Ich kann dir dann eine fertige Excel hier hochladen

von m. s. (Gast)


Lesenswert?

Die Feldgröße ist Dynamisch. Die gesucht Zahl ist aber immer 0.

Ich möchte praktisch immer wissen, wie groß die größte zusammenhängende 
"Null-Folge" ist, sprich der höchsten Anzahl von zusammenhängenden 
Nullen.

Vielleicht könnte man das so lösen:

0 suchen, von 0 ausgehend alle 8 angrenzenden Zellen kontrollieren, ob 
dieser benachbarten Zellen ebenfalls 0 ist. Falls ja, Adresse dieser 0 
merken und das Selbe Prinzip weiterlaufen.
Dabei wäre nur drauf zu achten, dass man die Adresse der letzten 0 nicht 
berücksichtigt, das dies dann eine Endlosschleife wäre.
Leider kenne ich mich in VBA gar nicht aus :/

von m. s. (Gast)


Lesenswert?

Me schrieb:
> Ich kann dir dann eine fertige Excel hier hochladen

Das wäre super.

Wenn nicht nur Reihen, sondern auch Spalten und Diagonalen 
berücksichtigt werden könnten und die Feldgröße variabel ist, wäre dies 
perfekt.



Zu den Diagonalen habe ich hier etwas gefunden:
http://www.excelformeln.de/formeln.html?welcher=88
Variable Zeilen und Spalten lassen sich eigentlich über Summen ganz gut 
lösen, indem man die Startadresse vorgibt und als Endadresse zum 
Beispiel startadresse+8 eingibt, über indirekt().

Vielleicht hilft dir das

von Me (Gast)


Lesenswert?

m. s. schrieb:
> Ich möchte praktisch immer wissen, wie groß die größte zusammenhängende
> "Null-Folge" ist, sprich der höchsten Anzahl von zusammenhängenden
> Nullen.

Ich glaube wir reden immer noch aneinander vorbei...
Du hast in deinem ersten Post ein Beispiel gemacht, in der du meintest 
wenn in einem 5x5 Feld 5 mal eine 0 in Reihe, Spalte oder diagonal 
vorkommt sell es gemeldet werden. In deinem "alles OK" Beispiel sind 3 
0en diagonal. Soll in dem Fall diese gemeldet werden. Wann gebau soll 
denn jetzt eigentlich ein Fehler kommen? Wenn eine ganze Reihe voll mit 
0en ist oder nur fünf am Stück? Deine jetzige Aussagen passen irgendwie 
nicht mehr zu deinem ersten Post...

Falls es dir wirklich nur um benachbarte 0en und deren benachbarte 0en, 
und deren benachbarte... Usw... geht... Das wird schwierig, daher das 
Skript das die alle 0en einfärbt und du sie eben selber noch zahlen 
musst

von Maddin S. (maddin91)


Lesenswert?

Guck dir mal mein Beispiel von oben an. mit den 5 nullen in einer 
Reihe/Spalte/Diagonale hat das nichts mehr zu tun. Er möchte, dass die 
maximale Anzahl zusammenhängender nullen zurückgegeben wird. Die können 
irgendwie zusammenhängen, solange sie sich quer, längs oder diagonal 
berühren.

von Me (Gast)


Lesenswert?

Maddin S. schrieb:
> Guck dir mal mein Beispiel von oben an. mit den 5 nullen in einer
> Reihe/Spalte/Diagonale hat das nichts mehr zu tun. Er möchte, dass die
> maximale Anzahl zusammenhängender nullen zurückgegeben wird. Die können
> irgendwie zusammenhängen, solange sie sich quer, längs oder diagonal
> berühren.

Danke, so eine Aussage habe ich gesucht.
Und die Antwort ist...
Soetwas wird kaum realisierbar sein.
m.s. dein Ansatz ist richtig und so wollte ich es auch angehen, es ist 
jedoch "etwas" schwieriger als gedacht...
Außerdem werde ich dafür nicht bezahlt :D

von Maddin S. (maddin91)


Lesenswert?

Mein Reden =)
auf den ersten Blick klingt es einfach. Auf den zweiten nicht mehr :D

von m. s. (Gast)


Lesenswert?

Mit einem 5x5 Quadrat würde es mir auch schon reichen.
Auch wenn nur Vertikal und Horizontal drin sind.
Diagonal wäre ein guter Zusatz, aber kein muss!

von m. s. (Gast)


Lesenswert?

Es würde auch reichen, wenn mir jemand ein Programm zeigt, dass
in einem X mal X großem Feld (größe dürft ihr euch aussuchen) die anzahl 
der aneinander hängenden nullen zählt.

Dann würde ich mein variables Feld einfach mit vielen dieser Quadrate 
abdecken (bereich verschieben) .

von Me (Gast)


Angehängte Dateien:

Lesenswert?

m. s. schrieb:
> Es würde auch reichen, wenn mir jemand ein Programm zeigt, dass
> in einem X mal X großem Feld (größe dürft ihr euch aussuchen) die anzahl
> der aneinander hängenden nullen zählt.
>
> Dann würde ich mein variables Feld einfach mit vielen dieser Quadrate
> abdecken (bereich verschieben) .

Du bist gut... Programm zeigen und dann nicht mal wissen wie man einen 
VBA Code in Excel einfügt...

Was auch immer du jetzt schon wieder mit der horizontalen und vertikalen 
meinst...
Was willst du denn jetzt eigentlich??!!!
Aneinanderreihen ODER horizontal, vertikal und diagonal??
Das ist was komplett unterschiedliches!


Ich glaube du solltest dir erst mal im klaren sein was du eigentlich 
willst und nicht jeden Tag etwas anderes fordern...


Für die Aneinanderreihung aller 0en habe ich jetzt eine funktionierede 
Datei, welche auch anzeigt wie viele 0en aneinandergereiht sind

von m. s. (Gast)


Lesenswert?

Me schrieb:
> Was auch immer du jetzt schon wieder mit der horizontalen und vertikalen
> meinst...
> Was willst du denn jetzt eigentlich??!!!
> Aneinanderreihen ODER horizontal, vertikal und diagonal??
> Das ist was komplett unterschiedliches!

Naja, ich sag es mal so:
Das horizontale und vertikale , bzw Zeilen und Spaltenweise prüfen, wie 
viele Nullen aneinander hängen, ist sozusagen eine Vereinfachung der 
anderen Version.

Da zu der komplexen Aufgabe niemand ein Idee hatte, wollte ich wissen, 
ob vielleicht jemand diese Vereinfachung lösen kann.

Me schrieb:
> Für die Aneinanderreihung aller 0en habe ich jetzt eine funktionierede
> Datei, welche auch anzeigt wie viele 0en aneinandergereiht sind

Du hast das hier aber super gelöst.
Das ist genau das was ich brauche! Sieht super aus!
Wie hast du es gemacht?

von Me (Gast)


Lesenswert?

Komplett in VBA gelöst.
Als erstes wird jeder 0 ein Index zugewiesen, also eine fortlaufende 
Zahl.
Im zweiten Schritt prüfe ich dann jedes benachbarte Feld jedes einzelnen 
Felds auf eine 0 ab. Ist es eine 0, dann bekommen sie den gleichen Index 
wie sie selbst.
Ist das erledigt, gibt es immer noch zu viele Indizes, daher lasse ich 
den Vorgang öfters durchlaufen.
Danach werden größere benachbarte Felder zusammengefügt indem alle 
Indizes eines Feldes gleich dem andern Feld gesetzt werden.
Anschließend werden dann die Indizes neu nummeriert, sodass diese wieder 
eine fortlaufend Nummer sind. Jedes 0er Feld hat nun seine eigene 
Indexnummer.
Anhand dieser Nummer wird dann die Farbe bestimmt.
Fehlt nur noch die Anzahl der 0en pro Index zu zählen und das in das 
jeweilige Excel-Feld zu schreiben.

von m. s. (Gast)


Lesenswert?

nicht schlecht!
Eine gute Herangehensweise.

Kannst du mir die Datei bitte hochladen?
Ich weiß in VBA nämlich nicht so bescheid

von Me (Gast)


Angehängte Dateien:

Lesenswert?

Das Feld kann beliebig groß sein.
Button zum starten des Makros ist zwischen Zeile 1 und 2 bei Spalte AA 
bis AD.

von m. s. (Gast)


Lesenswert?

Respekt!
Das ist genau das, was ich gesucht habe!
Vielen Dank für deine Mühe, ich weiß diese zu schätzen!

Du hast deinen Code mit einem Kennwort versehen, ich würde diesen Code 
gerne um einige Zeilen und Spalten erweitern, verrätst du mir das 
Kennwort?

von Me (Gast)


Lesenswert?

Ja habe ich.
Wie gesagt, dein Feld kann so groß sein wie es will.
Es wird immer erkannt und das Makro skaliert dynamisch mit. Nur die 
Makrolaufzeit wird logischerweise eben höher.
Du musst keine Spalten oder Zeilen hinzufügen...
Und nein, sonst hätte ich es nicht so eingestellt :)

von m. s. (Gast)


Lesenswert?

Me schrieb:
> Es wird immer erkannt und das Makro skaliert dynamisch mit.

Das ganze funktioniert aber nicht, wenn sich in leeres Feld dazwischen 
befindet.
Wenn ich in Zeile 38 ein paar Nullen einfüge, aber ein Feld freilasse, 
dann funktioniert das ganze nicht mehr

von Me (Gast)


Lesenswert?

Du kannst auch nicht einfach eine Zeile oder Spalte freilassen, da ich 
auf leere Zeilen/SPalten abfrage und so die Feldgröße bestimme... 
Außerdem kannst du da nicht einach im Code eine Spalten kunzufügen... 
hahaha
m.s. schrieb:
> Es ist nur eine Tabelle auf einem Arbeitsblatt.
Hier das hast du geschreiben und so habe ich es umgesetzt!
Es war nie die Rede von Leerzeilen un deiner Tabelle...

Wo wir wieder bei dem Punkt sind, klar und präzise Forderungen stellen 
und die NICHT im Laufe des Projekts oder noch besser nach Abschluss 
ändern...

von m. s. (Gast)


Lesenswert?

Me schrieb:
> Wo wir wieder bei dem Punkt sind, klar und präzise Forderungen stellen
> und die NICHT im Laufe des Projekts oder noch besser nach Abschluss
> ändern...

Nicht meckern.... " eine Tabelle" heißt nicht, dass in jeder Zelle etwas 
stehen muss ;)

von m. s. (Gast)


Lesenswert?

Und ich weiß wirklich nicht, wieso du ein Passwort eingefügt hast.
Mittlerweile weiß jeder, dass man den Code in VBA einfach lesen kann, 
wenn man es in OpenOffice öffnet. Oder eben mit einem Hex Konverter 
entfernt.

Was wolltest du mit dem Passwort bezwecken?

von Me (Gast)


Lesenswert?

Wenn du dich so gut auskennst hätte es kein Problem für dich sein können 
den ersten Code einfach in vba den debugger einzufügen... Dumm anstellen 
und eine fertige Datei fordern... Clever

Mach was du willst, entfernt das Passwort und änder den Code, ist mir 
egal... Ich lasse mich nicht für dumm verkaufen
Ich bin raus, jetzt muss du halt vba lernen, wäre sowieso nicht 
schlecht.

Und das nächste mal nimm dir das zu Herzen
Me schrieb:
> Wo wir wieder bei dem Punkt sind, klar und präzise Forderungen stellen
> und die NICHT im Laufe des Projekts oder noch besser nach Abschluss
> ändern...
Das hat nichts mit meckern zu tun

von m. s. (Gast)


Lesenswert?

Musst nicht gleich zickig werden, war nur ein Hinweis ;)
Oder bist du jetzt verärgert weil den Code doch jeder sehen kann?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.