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

array, Datenfelder und co

array, Datenfelder und co
Rolf
Hallo,
ich möchte aus einem Block von Zellen eines Tabellenblatts den Wert jeder einzelnen Zelle auslesen, danach über einen Makro verändern und dann wieder in die Zelle einlesen. Dazu brauche ich wohl in VBA eine "Tabelle", aus 4 Spalten: Reihe der Zelle, Spalte der Zelle, alter Wert, neuer Wert.
Wie geht das in VBA? Mit den Arrays etc habe ich immer wieder meine Probleme
Danke.
Rolf

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

Betreff
Benutzer
Anzeige
AW: array, Datenfelder und co
06.05.2012 11:32:50
ransi
HAllo
Arrays aus einem Tabellenbereich sind eigentlich recht unkompliziert.
Schau dir den Code mal an. Der ist recht einfach nachzuvollziehen
Das sind deine Daten:
 ABCD
110004
2697-10
3-101-5-5
482-210
52-810-3
65-2-1-10
7-5-6-5-2
8-4935
910-7-2-10
10-3008
117-29-1
1263-10-9
13-3487
14-11-10-3
15-65-1-9
16-3350
17-28110
18-4-8-42
19-9-7-7-7
20-5-6-54


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
 ABCD
1größer 0gleich 0gleich 0größer 0
2größer 0größer 0größer 0kleiner 0
3kleiner 0größer 0kleiner 0kleiner 0
4größer 0größer 0kleiner 0größer 0
5größer 0kleiner 0größer 0kleiner 0
6größer 0kleiner 0kleiner 0kleiner 0
7kleiner 0kleiner 0kleiner 0kleiner 0
8kleiner 0größer 0größer 0größer 0
9größer 0kleiner 0kleiner 0kleiner 0
10kleiner 0gleich 0gleich 0größer 0
11größer 0kleiner 0größer 0kleiner 0
12größer 0größer 0kleiner 0kleiner 0
13kleiner 0größer 0größer 0größer 0
14kleiner 0größer 0kleiner 0kleiner 0
15kleiner 0größer 0kleiner 0kleiner 0
16kleiner 0größer 0größer 0gleich 0
17kleiner 0größer 0größer 0größer 0
18kleiner 0kleiner 0kleiner 0größer 0
19kleiner 0kleiner 0kleiner 0kleiner 0
20kleiner 0kleiner 0kleiner 0größer 0


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Option Explicit


Public Sub machs()
    Dim vntArr As Variant
    Dim lngZeile As Long
    Dim intSpalte As Integer
    vntArr = Sheets("Tabelle1").Range("A1:D20") 'Tabellenbereich in ein Array laden
    
    For lngZeile = 1 To UBound(vntArr, 1) 'Schleife über die Zeilen
        For intSpalte = 1 To UBound(vntArr, 2) 'Schleife über die Spalten
            
            Select Case vntArr(lngZeile, intSpalte) 'Werte im Array bearbeiten
                Case Is < 0
                    vntArr(lngZeile, intSpalte) = "kleiner 0"
                Case Is = 0
                    vntArr(lngZeile, intSpalte) = "gleich 0"
                Case Is > 0
                    vntArr(lngZeile, intSpalte) = "größer 0"
            End Select
            
        Next
    Next
    Sheets("Tabelle1").Range("A1:D20") = vntArr 'Array wieder in die Tabelle zurückschreiben
End Sub


ransi
Anzeige
AW: array, Datenfelder und co
06.05.2012 11:44:12
Rolf
Hallo,
danke zunächst mal. Allerdings darf ich die Werte im Array zunächst nicht verändern, da ich auf diese Werte bei der Neuberechnung zurückgreifen muss. Wie stelle ich dann eine weitere Spalte ein? Wie lese ich die dann wieder aus?
Rolf (Übrigens nicht derselbe, der heute schon eine Anfrage eingestellt hat..)
AW: array, Datenfelder und co
06.05.2012 12:26:14
Reinhard
Hallo Rolf,
mir unklar was du möchtest.
Wechsle mal die letzte Zeile gegen diese:
Sheets("Tabelle1").Range("A1:D20").Offset(0, 5) = vntArr
Gruß
Reinhard
AW: array, Datenfelder und co
06.05.2012 20:43:48
Rolf
Hallo Reinhard,
nein, die Antwort geht in die falsche Richtung. Bisher habe ich als Vorschlag eine Prozedur, die mir Werte aus einer Tabelle in einen Array einliest. Dann werden diese Werte verändert. Soweit ist mir das klar. Allerdings will/darf ich die neu berechneten Werte nicht an dem Platz der alten Werte speichern, sondern ich brauche einen neuen Platz dafür. Der Hintergrund ist, dass verschiedene der alten Werte in die Berechnung der neuen Werte einfließen.
Wenn ich also von "neuer Spalte" rede, dann meine ich keine im Tabellenblatt, sondern im Array.
Rolf
Anzeige
AW: array, Datenfelder und co
07.05.2012 09:32:02
Reinhard
Hallo Rolf, Public Sub machs() Dim vntArr As Variant Dim lngZeile As Long Dim intSpalte As Integer vntArr = Sheets("Tabelle1").Range("A1:E20") 'Tabellenbereich in ein Array laden For lngZeile = 1 To UBound(vntArr, 1) 'Schleife über die Zeilen For intSpalte = 1 To UBound(vntArr, 2) - 1 'Schleife über die ersten Spalten vntArr(lngZeile, UBound(vntArr, 2)) = vntArr(lngZeile, UBound(vntArr, 2)) _ + vntArr(lngZeile, intSpalte) 'Summe bilden Next Next Sheets("Tabelle1").Range("A1:E20") = vntArr 'Array wieder in die Tabelle zurückschreiben End Sub
Gruß
Reinhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige