Clever-Excel-Forum

Normale Version: Ursprüngliche Zahlen finden?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6 7 8 9 10 11 12 13 14
(25.03.2016, 15:47)snb schrieb: [ -> ]
(25.03.2016, 15:34)atilla schrieb: [ -> ]Hallo, snb,

und was bekomme ich für Ergebnisse raus???

Das erfährst Du wenn Du den Code aus Beitrag #70, wie dort beschrieben ausführst.
Das sind die gleichen Ergebnisse, wie schauan.

Im gleichen Beitrag habe ich auch versucht zu erklären, wie was gezählt wird.

Pfffff,

Ich habe die Erklärung gelesen.
Aber dennoch bleibt die Frage im Beispiel Zeille 23 welche Zahlen gezählt werden.

hallo snb,

welche Zahlen?
Die 13,14 aus Zeile 12
Die 26 aus Zeile 13
Die 24,44 aus Zeile 15
Die 35 aus Zeile 16
Die 30 aus Zeile 17
Die 2 aus Zeile 18
Die 19 aus Zeile 20
Die 4,10,32 aus Zeile 21
Die 15,39 aus Zeile 22

Sind 14 offene Zahlen - die nicht gelb oder grau sind.

Zu deinem VBCode aus Heute, 13:46
Verstehe ich nicht ganz - was soll ich damit machen?

LG
Angelina
Hallo Angelina,

nach dieser Zeile:


Code:
Cells(arr(pp) + 1, 14) = Replace(Join(Split(strgSammlung, "#"), ", "), ", ", "", 1, 1)



folgende Zeilen einfügen:


Code:
     For n = 1 To UBound(Split(strgSammlung, "#"))
       If IsNumeric(Application.Match(CDbl(Split(strgSammlung, "#")(n)), Range(Cells(arr(pp) + 1, 4), Cells(arr(pp) + 1, 9)), 0)) Then
         lngP = InStr(1, Cells(arr(pp) + 1, 14), Format(Split(strgSammlung, "#")(n), "00"), vbTextCompare)
         Cells(arr(pp) + 1, 14).Characters(Start:=lngP, Length:=2).Font.Color = -16776961
       End If
     Next n
hallo atilla,

:100:

supi ... genau so :18: 


Ich habe im Dim Bereich noch die Variablen definiert - da hat es gestopt

Sub zählen1()

  Dim i As Long, j As Long, n As Long, lngP As Long, pp As Long

Denke das war richig so!

Nun kann ich optisch - wenn auch nicht zählbar - sehen wo die meisten Treffer liegen.
Also - ist es eher die erste Zahl in N oder die zweite oder dritte oder ...

Danke Danke !!!

LG
Angelina
Hallo Angelina,

gut und richtig gemacht!

Wenn Du magst, kannst Du diese Zeile:


Code:
         lngP = InStr(1, Cells(arr(pp) + 1, 14), Format(Split(strgSammlung, "#")(n), "00"), vbTextCompare)


mit folgender ersetzen:


Code:
         lngP = n * 3 + n - 3
hallo atilla,

ok wurde gemacht !

Danke

LG
Angelina
Hallo snb,

wenn Du die Erklärung aus
http://www.clever-excel-forum.de/Thread-...8#pid37608
und mein dort anhängendes Beispiel nimmst, hast Du im Code eine Konstante, mit der Du eine Debug-Ausgabe steuern kannst. Das hilft hoffentlich auch zum Verständnis.
'Konstante fuer Debug-Kontrolle
Const debCnt As Integer = 29

Nimm dort statt der 29 die 23 und schaue ins Direktfenster. Es werden alle betrachteten Zahlen ausgegeben einschl. weiterer Angaben usw., siehe dazu auf der verlinkten Seite etwas weiter oben der Beitrag #63. In der Mappe sind zu den offenen jetzt auch weitere Informationen.
Halllo Andre,

ich vermute, dass Du meinen zuletzt eingestellten Code nicht getestet hast.
Angelina schrieb, dass ständig neue Zeilen hinzu kommen würden. In der eingestellten Mappe waren es knapp 200 Zeilen.
Bei dieser kleinen Anzahl braucht Deine Variante schon sehr lang. Wenn Du meinen Code kurz überfliegst, dann siehst Du auch, dass es nicht so kompliziert zu zählen ist.

Obwohl ich, da Angelina es so haben wollte, so viele Informationen in die Tabelle schreibe und noch Färbungen vornehme, bin ich schon fertig, bevor Du die erste Zahl gefunden hast.

@snb,

in der Beispielmappe habe ich noch einmal versucht zu Erklären, was passieren soll.

Was die Geschwindigkeit eines möglichen Codes betrifft: Etwas schneller kann man es machen, aber nicht wesentlich, denke ich.
Es werde Farben ausgelesen und Zellen gefärbt. Also muss man einige male auf Range zugreifen.
Kannst mich aber gerne eines Besseren belehren.


[attachment=4705]
Hallo Atilla,

nein, Deinen Code hab ich noch nicht getestet. Ich schaue zwar immer mal drüber, aber die Gedanken waren bei meinem, um erst mal diesen Weg fehlerfrei zu gestalten. Mein Code läuft unter anderem deswegen lange, weil ich hier von meinem Prinzip der Minimierung der Zellzugriffe abgewichen bin. Am Anfang sah es ja nicht so viel aus mit den paar Zeilen ... Dann kommt noch dazu, dass ich vom Ende her jede Zeile prüfe, ob 3 farbliche Markierungen enthalten sind. Ich prüfe also auch gut 480 Nullen Smile Falls in diesen Zeilen, was sehr wahrscheinlich ist, keine farblichen Markierungen enthalten sind, könnte man meine aufgestellten Regeln noch entsprechend erweitern:
Prüfe vom Ende der Daten her bis zur ersten gefundenen Zeile mit 3 Markierungen im Bereich D:I keine Zeilen, deren Summe 0 ist.
Hallo Atilla,

was hast Du denn für einen Rechner?
Ich hab jetzt mal die Zeit mit der Api in mehreren Versuchen gemessen, ohne die Nullen 1,297 Sekunden, Schwankung ca- +0,2, mit Nullen 1,578, Schwankung ca. -0,2. System: i5, 8GB RAM, W10-64, Off2016-32
Da ist "sehr lange" doch noch etwas entfernt? Vielleicht nicht in der Formel 1, aber bei uns Exceljanern Smile Aber ich schaue trotzdem noch nach den Zellzugriffen.
(25.03.2016, 19:09)atilla schrieb: [ -> ]Hallo Angelina,

gut und richtig gemacht!

Wenn Du magst, kannst Du diese Zeile:


Code:
         lngP = InStr(1, Cells(arr(pp) + 1, 14), Format(Split(strgSammlung, "#")(n), "00"), vbTextCompare)


mit folgender ersetzen:


Code:
         lngP = n * 3 + n - 3




hallo atilla,

ich habe mal eine Frage bezüglich der Spalte N die du für mich eingerichtet hast.

Es werden da ja die Zahlen rot markiert, die in dem Bereich D:I identisch/übereinstimment sind.

Wie kann ich z.B. als Msgbox die Häufigkeit als Positionzahl ausgeben?

Die Häufigkeitsermittlung stelle ich mir so vor:
Nicht wie üblich - welche Zahl ist wie oft vorhanden, sondern so:
Ich weiß nicht wie man diese Rechenmethode nennt!

Was ist für mich eine Positionszahl in der Spalte N?
Die Zahlen sind dort durch Komma getrennt
Die erste Zahl von links ist die Positionszahl 1
Die zweite Zahl von links ist die Positionszahl 2
Die dritte Zahl von links ist die Positionszahl 3 usw. usw.

Jedoch nur die roten (mit roter Schriftfarbe ... dein VBACode) markierten.

Beispiel:
1,2,3,4,5,12,13,14,20
1,4,7,12,13,14,15,16,20
11,12,13,14,15,16,17,18,20

3 = Positionszahl 3
12 = Positionszahl 6
20 = Positionszahl 9
----------------------------
12 = Positionszahl 4
20 = Positionszahl 9
----------------------------
11 = Positionszahl 1
14 = Positionszahl 4
20 = Positionszahl 9

Ausgabe: Msgbox
Posi 1 = 1 x
Posi 3 = 1 x
Posi 4 = 2 x
Posi 6 = 1 x
Posi 9 = 3 x


Das ist für mich eine Möglichkeit die Grundhäufigkeit zu ermitteln.

Das reicht aber im Normalfall nicht aus, da wir hierdurch nur ... wie gesagt eine Grundhäufigkeit ermittlen können.

Jetzt kommt das, was ich nicht benennen kann - mathematischer Ausdruck:

Wenn man als Beispiel die o.g. Msgbox als Ausgabe hätte
Ausgabe: Msgbox
Posi 1 = 1 x
Posi 3 = 1 x
Posi 4 = 2 x
Posi 6 = 1 x
Posi 9 = 3 x

Und nun nach dieser 1.Msgbox
eine zweite 2.[i]Msgbox [/i]ausgeben würde die jedoch so zählt:
Wenn der am häufigsten vorkommende Posiwert ... hier die "Posi 9 = 3 x"
mit seinen ganzen Zeilen aus denen er gebildet wurde:
1,2,3,4,5,12,13,14,20
1,4,7,12,13,14,15,16,20
11,12,13,14,15,16,17,18,20
nicht vorhanden gewesen wäre ... was wäre dann der nächsthöhere Posi Wert ???

usw.
wenn auch dieser nicht vorhanden gewesen wäre ... was wäre dann der nächsthöhere Posi Wert ???
usw.
wenn auch dieser nicht vorhanden gewesen wäre ... was wäre dann der nächsthöhere Posi Wert ???

Wie nennt man diese Art ?
Ist das überhaupt machbar ?

Vielleicht hat ja auch jemand anderes eine Idee ... hierzu.

LG
Angelina


Seiten: 1 2 3 4 5 6 7 8 9 10 11 12 13 14