Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
VBA Listen
Gehe zu Seite 1, 2  Weiter
zurück: VBA-Suchanweisung fertig - farbliche Hervorhebung möglich? weiter: Zellmarkierung (Fadenkreuz) anpassen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Offen Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
belafleck1234
Gast


Verfasst am:
09. Okt 2012, 13:25
Rufname:

VBA Listen - VBA Listen

Nach oben
       Version: Office 2010

Hallo

Ich habe eine vermutlich sehr einfache Frage:
In meiner Tabelle habe ich eine Liste in Spalte A (z.B. 1 , 2, 3, 4) und eine in Spalte B (z.B. 5, 6, 7, 8). Diese beiden Listen möchte ich mit VBA einlesen und miteinander multiplizieren.

(Mir ist bewusst, dass das mit einer normalen Formel geht aber ich will eben VBA lernen)

MfG
Daniel
slowboarder
Im Profil kannst Du frei den Rang ändern


Verfasst am:
09. Okt 2012, 13:30
Rufname:


AW: VBA Listen - AW: VBA Listen

Nach oben
       Version: Office 2010

hi
was genau möchtest du mulitplizieren, wie soll das Ergebnis aussehen und wo willst du es hingeschrieben haben?

Gruß Daniel
belafleck1234
Gast


Verfasst am:
09. Okt 2012, 13:34
Rufname:

AW: VBA Listen - AW: VBA Listen

Nach oben
       Version: Office 2010

Hallo Daniel

Danke für die Antwort.
So stell ich mir das vor:
A * B = C
1 * 5 5
2 * 6 12
3 * 7 21
4 * 8 32

Also die Liste in Spalte A und B in jeweils eine Variable einlesen und dann diese beiden multiplizieren?

MfG
Daniel
slowboarder
Im Profil kannst Du frei den Rang ändern


Verfasst am:
09. Okt 2012, 13:40
Rufname:

AW: VBA Listen - AW: VBA Listen

Nach oben
       Version: Office 2010

hi
würde ich in VBA so machen:

Code:
dim A as Variant
dim B as Variant
dim C as Variant
dim z as long

A = Range("A1:A4").Value
B = Range("B1:B4").Value
redim C(1 to Ubound(A, 1), 1 to 1)

for z = 1 to Ubound(A, 1)
   C(z, 1) = A(z, 1) * B(z, 1)
next

Cells(1, 3).Resize(1 To Ubound(C, 1), 1 To Ubound(C, 2)).Value = C


ode alternativ die Formel per VBA schreiben:
Code:
With Range("C1:C4")
.FormulaR1C1 = "=RC1*RC2"
.Formula = .Value
End With


Gruß Daniel
EtoPHG
Ich sehe dunkle Zeiten aufziehen...


Verfasst am:
09. Okt 2012, 13:48
Rufname: Hansueli


AW: VBA Listen - AW: VBA Listen

Nach oben
       Version: Office 2010

Hallo,

Daniel stellt dir da zwar 2 schnelle Algorithmen vor, die aber IMHO für einen Anfänger sehr schwer nachvollziehbar, bis völlig unverständlich sind.
Du musst Zellinhalte nicht unbedingt in Variablen einlesen, sondern kannst direkt mit ihnen Rechnen.
Also für dein Beispiel:
Code:
Dim lRow as Long ' Variable für die Zeilennummer
For lRow = 1 to 4
    Cells(lRow,3) = Cells(lRow,1) * Cells(lRow,2)
Next lRow

Das ist eine einfache for Next-Schleife über die 4 Zeilen und vielleicht etwas lesbarer, wenn auch langsamer. Wobei letzteres vielleich ab 4000 Zeilen zum tragen kommt Very Happy
Voraussetzung für all diese Codes ist, dass da auch wirklich nur numerische Werte in den Zellen A1:B4 stehen, sonst knallts Sad

Gruess Hansueli

_________________
Forenhelfer danken für eine Rückmeldung!
Der Kluge lernt, der Dummkopf erteilt gern Belehrungen. - Anton Tschechow
slowboarder
Im Profil kannst Du frei den Rang ändern


Verfasst am:
09. Okt 2012, 13:54
Rufname:

AW: VBA Listen - AW: VBA Listen

Nach oben
       Version: Office 2010

hi
nunja so schwer verständlich wird das für ihn nicht sein, da er das Vorgehen ja selbst vorgeschlagen hat: Werte in eine Variable lesen und dann ausmultiplizieren.

das Excelzellen per Schleife zu bearbeiten sollte man sich gar nicht erst angewöhnen.
spätestens, wenn auf dem Blatt auch noch weiter Formeln (ggf sogar volatil) und Events vorhanden sind, wirds damit auch schon bei kleinern Datenmengen zäh.
Gruß Daniel
ThommyNew
Gast


Verfasst am:
09. Okt 2012, 13:59
Rufname:

AW: VBA Listen - AW: VBA Listen

Nach oben
       Version: Office 2010

Hi,

das...
Code:
Cells(1, 3).Resize(1 To Ubound(C, 1), 1 To Ubound(C, 2)).Value = C

... würde ich als Schrott bezeichnen.

Thomas
Gast



Verfasst am:
09. Okt 2012, 14:01
Rufname:

AW: VBA Listen - AW: VBA Listen

Nach oben
       Version: Office 2010

Hallo

Erstmal danke euch beiden für die Antworten!

@Daniel (slowborder):
Bzgl. des ersten Scripts : Ich muss also die Zielvariable C so redimensionieren, dass sie von den Dimensionen A und B entsprechen. Das war der Fehler, den ich bisher gemacht habe! Nun bekomme ich aber, wenn ich versuche, dein Script auszuführen, eine Fehlermeldung in der letzten Zeile:
"Fehler beim Kompilieren: Syntaxfehler".
Woran kann das liegen?


@EtoPHG:
Habe ein wenig Programmiererfahrung im WebDev Bereich mit JavaScript und XML/XSL.
Mich interessiert vor allem was ich jetzt noch mit diesen Arrays schönes veranstalten kann ;)

MfG
Daniel
belafleck1234
Gast


Verfasst am:
09. Okt 2012, 14:02
Rufname:

AW: VBA Listen - AW: VBA Listen

Nach oben
       Version: Office 2010

@Thomas: Wie anders machen?
ThommyNew
Gast


Verfasst am:
09. Okt 2012, 14:04
Rufname:

AW: VBA Listen - AW: VBA Listen

Nach oben
       Version: Office 2010

Hi,

Code:
Cells(1, 3).Resize(UBound(C)).Value = C


Thomas
Gast



Verfasst am:
09. Okt 2012, 14:07
Rufname:

AW: VBA Listen - AW: VBA Listen

Nach oben
       Version: Office 2010

@thomas:
Funktioniert! Klasse, Danke!
EtoPHG
Ich sehe dunkle Zeiten aufziehen...


Verfasst am:
09. Okt 2012, 14:08
Rufname: Hansueli

AW: VBA Listen - AW: VBA Listen

Nach oben
       Version: Office 2010

Hallo Daniel (Anfrager)

Schreib statt der fehlerhaften Codezeile:
Code:
    Range("C1:C4") = C
Gruess Hansueli
_________________
Forenhelfer danken für eine Rückmeldung!
Der Kluge lernt, der Dummkopf erteilt gern Belehrungen. - Anton Tschechow
ThommyNew
Gast


Verfasst am:
09. Okt 2012, 14:10
Rufname:

AW: VBA Listen - AW: VBA Listen

Nach oben
       Version: Office 2010

Hi,

Code:
Range("C1:C4") = C


Das ist doch Murks. Wenn sich der Bereich ändert muss ständig angepasst werden.

Thomas
EtoPHG
Ich sehe dunkle Zeiten aufziehen...


Verfasst am:
09. Okt 2012, 14:21
Rufname: Hansueli

AW: VBA Listen - AW: VBA Listen

Nach oben
       Version: Office 2010

Hallo Tommy,

Na ja dann sind aber die Definitionen,
Code:
A = Range("A1:A4").Value
B = Range("B1:B4").Value
wohl auch Murks!
Das Forum ist Hilfe zur Selbsthilfe und keine Spielplatz um VBA zu lernen!

Gruess Hansueli

_________________
Forenhelfer danken für eine Rückmeldung!
Der Kluge lernt, der Dummkopf erteilt gern Belehrungen. - Anton Tschechow
slowboarder
Im Profil kannst Du frei den Rang ändern


Verfasst am:
09. Okt 2012, 14:28
Rufname:


AW: VBA Listen - AW: VBA Listen

Nach oben
       Version: Office 2010

Hi

naja, C ist in Abhängigkeit von A dimensoniert und somit variabel
somit sollte auch der Zellbereich, in welchen C zurückgeschrieben wird, immer auch direkt an die grösse von C angepasst werden.

im Regelfall würde man ja auch A und B nicht fix zuweisen, sondern flexibel angepasst an die Datenmenge, also sowas in der Art:

A = Cells(1,1).CurrentRegion.Columns(1).Value
B = Cells(1,1).CurrentRegion.Columns(2).Value
Redim C(1 to Ubound(A, 1), 1 to 1)

und dann bist du zwingend bei

Cells(1, 3).Resize(Ubound(C, 1), Ubound(C, 2)).Value = C

außderdem lernt man VBA ja auch nicht mit allen Feinheiten und Tricks auf einmal, sonden "Step by Step" und die Fein- und Besonderheiten dann nach und nach.

Gruß Daniel
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Tabellen/Listen vergleichen 10 exbegin 390 29. Jun 2010, 22:25
shift-del Tabellen/Listen vergleichen
Keine neuen Beiträge Excel Formeln: Nur Zell-Reihen listen, welche mit "x" markiert si 2 Gast 298 24. Mai 2010, 02:52
Gast Nur Zell-Reihen listen, welche mit "x" markiert si
Keine neuen Beiträge Excel Formeln: Übereinstimmung in 2 Listen prüfen 8 Gästlein 1456 14. Mai 2010, 11:05
Simba Übereinstimmung in 2 Listen prüfen
Keine neuen Beiträge Excel Formeln: Listen aus mehreren Tabellenblättern erstellen 5 DonPenne 1213 22. Apr 2010, 12:52
DonPenne Listen aus mehreren Tabellenblättern erstellen
Keine neuen Beiträge Excel Formeln: Namen in mehreren Listen Zählen mit dem + effekt 3 excelisto 395 25. März 2010, 14:59
excelisto Namen in mehreren Listen Zählen mit dem + effekt
Keine neuen Beiträge Excel Formeln: 2 Listen vergleichen und nicht übereinstimmende Felder ausge 12 Pingu1406 909 04. März 2010, 17:11
Pingu1406 2 Listen vergleichen und nicht übereinstimmende Felder ausge
Keine neuen Beiträge Excel Formeln: Formel für: aus drei verschiedenen listen auswäheln 11 moafox 294 25. Jan 2010, 22:17
silex1 Formel für: aus drei verschiedenen listen auswäheln
Keine neuen Beiträge Excel Formeln: drop-down liste in abhängigkeit anderer drop-down listen 2 Myrvyn 7214 18. Jan 2010, 14:30
Myrvyn drop-down liste in abhängigkeit anderer drop-down listen
Keine neuen Beiträge Excel Formeln: Zwei Excel Listen vergleichen! Per Sverweis?? 2 julia1234 5483 10. Nov 2009, 16:11
julia1234 Zwei Excel Listen vergleichen! Per Sverweis??
Keine neuen Beiträge Excel Formeln: Excel Listen vergleichen 2 sup1 1201 22. Sep 2009, 14:58
sup1 Excel Listen vergleichen
Keine neuen Beiträge Excel Formeln: Datenüberprüfung mit 2 Listen und 2 Auswahlmöglichkeiten 2 sx_Marco 3151 18. Aug 2009, 14:43
sx_Marco Datenüberprüfung mit 2 Listen und 2 Auswahlmöglichkeiten
Keine neuen Beiträge Excel Formeln: Vergleich zweier Listen und Zuweisung einer Kategorie 2 Gast 299 06. Jul 2009, 22:51
Gast Vergleich zweier Listen und Zuweisung einer Kategorie
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel Tricks