Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1320to1324
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

Makro mit Datenfeld und Variabel

Makro mit Datenfeld und Variabel
03.07.2013 08:41:43
alifa
Hallo,
in der Tabelle befinden sich Daten in den Spalten A bis P und in Spalte R. Es sind 533 Zeilen. Die Daten aus den Spalten A-P sollen im Array p erfasst werden die Variable aus Spalte R wird für r1 gebraucht. Nun soll ein Makro diese Daten Zeile für Zeile bearbeiten und das Ergebnis mit der MsgBox erfassen. Beispiel:
Zeile 1. 15 17 21 25 29 34 38 42 46 51 55 59 63 65 85 195 ... 210
Zeile 2. 15 17 21 25 29 34 38 42 46 51 55 59 63 65 85 235 ... 223
Mein Makro ist etwas komplizierter, doch zur Probe würde ein einfaches Makro ausreichen. Z.B. wenn die Summe der Zahlen aus dem Array 4xr1 ist, dann MsgBox p(1)
Und so weiter, Zeile für Zeile. Bei meinem konkreten Makro ist zu erwarten, dass es sehr unwahrscheinlich ist, mehrere Lösungen zu finden.
Gruß, alifa

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro mit Datenfeld und Variabel
03.07.2013 09:28:41
fcs
Hallo alifa,
hier ein Beispiel zum Einlesen der Arraydaten und Auswerten der Arrayinhalte.
Gruß
Franz
Sub ArrayTest()
Dim p As Variant, r1 As Variant, dblSumme As Double
Dim lngZeile As Long, lngSPalte As Long
Dim wks As Worksheet
Set wks = ActiveSheet
With wks
'letzte Zeile mit Daten
lngZeile = .Cells.Find(what:="*", after:=.Cells(1, 1), LookIn:=xlFormulas, _
lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlPrevious).Row
'    lngZeile = 533
p = .Range(.Cells(1, 1), .Cells(lngZeile, 16))   'Array Spalte A:P
r1 = .Range(.Cells(1, 18), .Cells(lngZeile, 18)) 'Array Spalte R
End With
For lngZeile = LBound(p, 1) To UBound(p, 1)
dblSumme = 0
For lngSPalte = LBound(p, 2) To UBound(p, 2)
dblSumme = dblSumme + p(lngZeile, lngSPalte)
Next
If dblSumme = 4 * r1(lngZeile, 1) Then
If MsgBox("SUMME(A:P) in Zeile " & lngZeile & " ist gleich Wert in Spalte R", _
vbInformation + vbRetryCancel, "Wertevergleich") = vbCancel Then Exit For
End If
Next
End Sub

Anzeige
AW: Makro mit Datenfeld und Variabel
03.07.2013 09:35:27
Beverly
Hi Alifa,
weshalb musst du ein Array benutzen?
Dim lngZeile As Long
For lngZeile = 1 To 2
If Application.Sum(Range(Cells(lngZeile, 1), Cells(lngZeile, 16))) = _
4 * Cells(lngZeile, 18) _
Then MsgBox "Ziel erreicht"
Next lngZeile


AW: Makro mit Datenfeld und Variabel
03.07.2013 11:16:52
alifa
Hi Karin und Franz,
r1 ist kein Array, sondern die Zahl in Spalte R.
Mein Makro soll ein magisches Quadrat 4x4 berechnen, die 16 Zahlen im Datenfeld p sind vorgegeben. Ein Auszug aus meinem jetzt halbwegs "angepassten" Makro. Wie definiert man r1?

Dim lngZeile&, lngSpalte&
Dim wks As Worksheet
t = Timer
'Cells.ClearContents
Set wks = ActiveSheet
With wks
lngZeile = 533
p = .Range(.Cells(1, 1), .Cells(lngZeile, 16))
End With
For lngZeile = LBound(p, 1) To UBound(p, 1)
'r1 = ?
For Each a1 In p
For Each b1 In p
If b1a1 Then
For Each c1 In p
If c1  b1 And c1  a1 Then
For Each d1 In p
If Va(d1, Array(c1, b1, a1)) Then
If a1 + b1 + c1 + d1 = r1 Then

Va ist eine Funktion, die prüft, ob die Variable unterschiedlich von den bisherigen Variabeln ist.
Gruß, Alifa

Anzeige
AW: Makro mit Datenfeld und Variabel
03.07.2013 12:21:22
fcs
Hallo Alifa,
was bedeutet bei dir "Zahl in Spale R"?
Wenn es eine einzelne Zahl in einer Zelle ist, dann kannst du diesen hier z.B. wie folgt der Variablen zuweisen:
r1 = wks.Range("R1")
Gruß
Franz

AW: Makro mit Datenfeld und Variabel
03.07.2013 16:41:33
alifa
Hi,
mit r1=Cells(lngZeile,18) klappt das! Eure Beiträge haben mir weitergeholfen. Danke vielmals!
Alifa

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige