Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1600to1604
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

Datenfeld

Datenfeld
08.01.2018 14:24:13
Siegfried
Hallo zusammen,
ich suche nach einer Möglichkeit, Daten in ein Datenfeld aufzunehmen, ohne den Umweg über ein Tabellenblatt.
Bisher realisiere ich das mit folgendem Code:
If WorksheetFunction.CountIf(RngPaar, Zahl1) = 0 And _
WorksheetFunction.CountIf(RngPaar, Zahl2) = 0 Then
Zähler = Zähler + 1
Cells(1, 1).Offset(Zähler, Part1Col) = Zahl1
Cells(1, 1).Offset(Zähler, Part2Col) = Zahl2
ArrPaar(Zähler, 1) = Zahl1
ArrPaar(Zähler, 2) = Zahl2
End If
Wie zählt man Werte in einem Array?
Gruß
Siegfried

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenfeld
08.01.2018 14:45:03
Wolfgang
Hmm, Du schreibst doch die Zahlen direkt in die Array-Variable - die Zeilen
Cells(1, 1).Offset(Zähler, Part1Col) = Zahl1
Cells(1, 1).Offset(Zähler, Part2Col) = Zahl2

könntest Du auch weglassen.
Was das Zählen von Werten in einem Array betrifft: Vielleicht hilft dir dies:
Option Explicit
Option Base 1
Sub test()
Dim ArrPaar(7, 2) As Integer, _
i As Integer, _
summe As Integer
ArrPaar(1, 1) = 5
ArrPaar(2, 1) = 7
ArrPaar(3, 1) = 9
ArrPaar(4, 1) = 3
ArrPaar(5, 1) = 4
ArrPaar(6, 1) = 6
ArrPaar(7, 1) = 12
For i = 1 To UBound(ArrPaar)
summe = summe + ArrPaar(i, 1)
Next i
Debug.Print summe
End Sub
Viele Grüße, Wolfgang
Anzeige
AW: Datenfeld
08.01.2018 15:36:24
Siegfried
Hallo Wolfgang,
mit Deinem Vorschlag komme ich nicht weiter.
Dabei werden nur die Werte addiert, die in der ersten Spalte stehen.
Meine präzisere Frage ist:
Wie zählt man bestimmte Werte in einem Array?
Wie oft ist z.B. die Zahl "1" vorhanden, egal ob in Spalte 1 oder in Spalte 2.
Gruß
Siegfried
AW: Datenfeld
08.01.2018 15:47:44
Daniel
Hi
zur Not mit einer Schleife, wenns über das gesamte Array gehen soll
x ist hierbei als Variant zu deklarieren:

for each x in ArrPaar
if x = 1 then Zähler = Zähler + 1
Next
du kannst aber auch nur einen Ausschnitt aus dem Array zählen (wobei die Schleifenwerte immer innerhalb der grenzen des Arrays liegen müssen:
for z = 3 to 5
for s = 1 to 2
if ArrPaar(z, s) = 1 then Zähler = Zähler + 1
next s
next z
Bei Arrays braucht man die Schleifen nicht scheuen.
Diese werden in der Regel sehr schnell bearbeitet, so dass man den kleinen Programmieraufwand nicht scheuen braucht und nicht zwanghaft nach einer entsprechenden Funktion suchen muss.
(anders siehts bei Schleifen über Excelzellen aus, hier sind Schleifen langsam, so dass es dann sinnvoll ist, die entsprechend vorgefertigte Funktion zu verwenden oder Zelleninhalt vorher in ein Array zu kopieren und dann die Schleife über das Array laufen zu lassen)
Gruß Daniel
Anzeige
AW: Datenfeld
08.01.2018 16:40:29
Siegfried
Hi Daniel,
so wie ich es verstehe,
liefert mir Dein Code nicht die Information, die ich mit der Function
"WorksheetFunction.CountIf(Bereich, Suchkriterium)"
erhalte.
Für mein Vorhaben brauche ich das aber.
Mit meinem bisherigen Code prüfe ich, ob die Zahl bereits vorhanden ist und nur dann, wenn die Zahl noch fehlt, übernehme ich sie.
Gruß
Siegfried
AW: Datenfeld
08.01.2018 16:54:17
Daniel
HI
doch, liefert genau diese Information.
du läufst mit ner Schleife über die einzelnen Elemente des Arrays,
und wenn der Array-Einzelwert mit deinem Vergleichswert übereinstimmt, zählst du den Zähler +1 hoch.
am schluss weißt du dann in deiner Zählervariable, wie oft der Wert im Array vorkommt.
das macht die CountIf-Funktion genau so.
nur halt intern. der Haken an der Sache ist, dass die CountIf-Funktion für das Arbeiten mit Excel optimiert ist.
So kannst du beispielsweise in der CountIF-Funktion problemlos eine ganze Spalte als Zellbereich angeben, und trotzdem läuft die Schleife dann nicht über alle Zellen der Spalte, sondern nur über die Zellen, die zum benutzen Bereich auf dem Blatt gehören.
Aber diese Information "genutzer Bereich" gibt's eben nur für Zellobjekte, aber nicht für einfache Arrays, daher funktioniert das CountIf nicht mit Arrays.
du musst dir die Zählschleife dann selber programmieren.
Gruß Daniel
Anzeige
AW: Datenfeld
08.01.2018 18:47:26
Siegfried
Hi Daniel,
Danke,
ich werde mich zu einem späteren Zeitpunkt intensiver mit Deinem Code beschäftigen.
Fürs erste funktioniert mein Umweg ja.
Gruß
Siegfried

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige