5.3k Aufrufe
Gefragt in Tabellenkalkulation von
Hi
ich bin neu und VBA ist für mich absolutes Neuland

Ich habe habe zwei Excel-Dateien
In Datei A Blatt 1 habe ich in Spalte A, F und G Werte Stehen


In Datei B sollen diese Werte in B1,B2 und B3 eingefügt werden
--> Daten werden abgefragt --> Daten kommen in Datei B
--> in Zelle C4 (Datei B) errechnet sich ein Wert (wie es mir schon gelungen ist)

Dieser Wert soll in Datei A Spalte N überführt werden und dort bleiben

Dies soll für jede Zeile funktionieren aber ich finde keinen weg und habe wohl zu wenige Kenntnisse in VBA um eine funktionierende Schleife zum laufen zu bringen die nach möglichkeit von alleine beginnt

ich hoffe es kann gehofen werden

21 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
sehe ich das richtig. Du willst den Zellinhalt aus 1.048.576 Zellen in eine Zelle Schreiben.- Also Spalte A in B1 usw.

Gruß hajo
0 Punkte
Beantwortet von
Hallo Hajo,

danke für die schnelle Antwort :D

nein ich habe gedacht es gibt eine Möglichkeit eine Schleife über ca.
5000 Zeilen zu machen
( und nur Zeilen wo in "Tabelle A" Zelle N nichts drinnen steht)
______________________
--> Zeile1 Schreibe aus "Tabelle A" Zelle A1 in "Tabelle B" Zelle B1
--> Zeile1 Schreibe aus "Tabelle A" Zelle F1 in "Tabelle B" Zelle B2
--> Zeile1 Schreibe aus "Tabelle A" Zelle G1 in "Tabelle B" Zelle B3

--> Zeile1 Schreibe aus "Tabelle B" Zelle C4 in "Tabelle B" Zelle N1

---------->alles mit Zeile 2 usw. ...
______________________

und der in Zelle N1 importierte Wert soll als Wert eingetragen
werden und nicht mehr von der Schleife geändert werden.

Für andere Ansätze wäre ich auch offen
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
der erste Beitrag war ja noch klar, jetzt sind alle Klarheiten beseitigt. Ich bin raus.

Gruß hajo
0 Punkte
Beantwortet von
Abend ^^

Also:

1.die Daten aus "Tabelle A" an die erwähnten stellen in "Tabelle B"
kopieren

//--> in "Tabelle B" Zelle C4 wird automatisch ein Wert ermittelt

--> dieser wert wird in die Zeile aus der die Daten kamen
geschrieben
(Spalte N)

-->
2. Schleife beginnt wieder in "Tabelle A" von vorne eine Zeile weiter
unten

ich hoffe jetzt werden meine Vorstellungen klarer

usw.

Grüße^^

ok es kann auch überschrieben werden wenn das mein Problem
vereinfacht :D
0 Punkte
Beantwortet von
Also Ich dachte an eine For Schleife


Sub Schleifen_For_Next()
For i=1 To 5000

//ich hoffe mich jetzt besser auszudrücken :D
daten übertragen (kopieren)
"Datei A" -->Zellwert aus Zelle A1 in "Datei B" Zelle B1
"Datei A" -->Zellwert aus Zelle F1 in "Datei B" Zelle B2
"Datei A" -->Zellwert aus Zelle G1 in "Datei B" Zelle B3

//--> aus den übertragenen Daten wird in "Datei B" Zelle C4
automatisch ein Wert ermittelt

//--> dieser Wert soll in "Datei A" Zelle N1 als Wert übertragen werden

---> Schleife geht in "Datei A" in Zeile 2 und beginnt von vorne



End Sub
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Sonnenblume,

warum strapazierst Du Deine und unsere Hirzellen über Gebühr?

Wenn Du Dein Problem nicht allgemeinverständlich erklären kannst, dann stell doch einfach eine (abgespeckte) Beispielmappe mit evtl nötigen Hinweisen ein.

Dann hast Du auch eine Chance auf eine Lösung.

Gruß
Rainer
0 Punkte
Beantwortet von
Entschuldigung

wenn ich jetzt noch wüsste wie das gemacht wird die dateien habe ich :D


mein anfang:


Sub Test1()
'
'
' Daten übertragen
'

For i = 1 To 5000
Windows("Batchverbrauchrev1_test06.09.2012.xls").Activate
Range("B1").Select
ActiveCell.FormulaR1C1 = _
"=[Produktionsauswertung_test06.09.2012.xlsx]Eingabe!R2C1"
Range("B2").Select
ActiveCell.FormulaR1C1 = _
"=Produktionsauswertung_test06.09.2012.xlsx!Tabelle3[@Endzeit]"
Range("B3").Select
ActiveCell.FormulaR1C1 = _
"=[Produktionsauswertung_test06.09.2012.xlsx]Eingabe!R2C7"
Windows("Produktionsauswertung_test06.09.2012.xlsx").Activate
ActiveWindow.SmallScroll Down:=-3
Range("N2").Select
ActiveCell.FormulaR1C1 = _
"=[Batchverbrauchrev1_test06.09.2012.xls]Synthese!R4C3"

End Sub



aber die schleife macht probleme
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

du kannst eine Arbeitsmappe z.B. hier hier einstellen und den Link, den du bekommst,im Forum posten.

Gruß

M.O.
0 Punkte
Beantwortet von
Hey Danke ^^

Datei A

http://www.file-upload.net/download-4760669/Datei-A.xlsx.html
(
Datei-A.xlsx
)

Datei B

http://www.file-upload.net/download-4760671/Datei-B.xlsx.html
(
Datei-B.xlsx
)



Ich habe auch herausgefunden das mein Problem mit der copy funktion gelöst werden könnte wenn man eine schleife drunter bastelt

mein weiterer Ansatz




Sub Makro1()
'
' Makro1 Makro
'

'
' Windows("Produktionsauswertung_test06.09.2012.xlsx").Activate
' Selection.Copy
' Windows("Batchverbrauchrev1_test06.09.2012.xls").Activate
'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False
'Windows("Produktionsauswertung_test06.09.2012.xlsx").Activate'
' Range("F3").Select
' Application.CutCopyMode = False
' Selection.Copy
' Windows("Batchverbrauchrev1_test06.09.2012.xls").Activate
'Range("B2").Select
'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' ' :=False, Transpose:=False
' Windows("Produktionsauswertung_test06.09.2012.xlsx").Activate
' Range("G3").Select
' Application.CutCopyMode = False
'Selection.Copy
' Windows("Batchverbrauchrev1_test06.09.2012.xls").Activate
' Range("B3").Select
' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False
' Range("C4").Select
' Application.CutCopyMode = False
' Selection.Copy
' Windows("Produktionsauswertung_test06.09.2012.xlsx").Activate
'Range("N3").Select
'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
' :=False, Transpose:=False


End Sub


[*]
[sup]*Threadedit* 31.08.2012, 17:23:04
Admininfo: Hier Infos zu unserer Beitragsformatieung.
[/sup]
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

schau mal ob ich dich richtig verstanden haben:

Sub daten_kopieren()
Dim Zieldatei As String
Dim lzeile, zeile As Long

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

'Name der anderen Datei festlegen
Zieldatei = "Datei-B.xlsx"

'letzte Zeile in der aktiven Tabelle ermitteln
lzeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

For zeile = 2 To lzeile
'A wird kopiert
Workbooks(Zieldatei).Sheets("Tabelle1").Cells(1, 2) = ThisWorkbook.ActiveSheet.Cells(zeile, 1).Value
'F wird kopiert
Workbooks(Zieldatei).Sheets("Tabelle1").Cells(2, 2) = ThisWorkbook.ActiveSheet.Cells(zeile, 6).Value
'G wird kopiert
Workbooks(Zieldatei).Sheets("Tabelle1").Cells(3, 2) = ThisWorkbook.ActiveSheet.Cells(zeile, 7).Value
'Wert in N schreiben
ThisWorkbook.ActiveSheet.Cells(zeile, 14) = Workbooks(Zieldatei).Sheets("Tabelle1").Cells(4, 2).Value
Next zeile

'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True

End Sub


Gruß

M.O.
...