Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Daten per Formel oder per VBA in ein anderes WB kopieren
#1
Hallo,

ich hoffe, eure Hilfsbereitschaft nicht überszustrapazieren, wenn ich schon wieder um Hilfe bitte!

Im Thema "VBA: Zellenreferenzen durch Variablen ersetzen" habt ihr mir geholfen, per Formeln Daten zu kopieren. Und das funktioniert.

Allerdings führt der Weg bisher über einen Umweg.
Die reale Situation: monatliche Daten innerhalb eines Workbook's mit Namen Base werden per VBA aus dem Blatt Database in ein neues Blatt kopiert das die Nr. des Monats erhält und in Bas  abgespeichert wird.
Dieses Blatt wird dann ausgedruckt.
Von außerhalb kommt jeden Monat ein WB per Mail, das ausgefüllt werden muß (Var_0020_Jan bis Var_0020_Dec).
In diesem WB ist in A die Nummer die zur Identifikation der Zeilen in Database dient aus denen Daten kopiert werden sollen, in B der Name (ohne Relevanz hier), und in C,D und E werden bisher manuell aus dem ausgedruckten Blatt (anstatt direkt aus Database) die Daten eingesetzt, was natürlich ein Fehlerrisiko in sich birgt, von der Zeit mal abgesehen.

Ich habe es jetzt hingekriegt, über den Umweg dieses ersten Blattes (das in Base abgespeichert und ausgedruckt wird), per Formeln die ich in Var_0020_[Jan...Dec] einsetze, um sie gleich durch ihre Werte zu ersetzen, das Blatt auszufüllen, allerdings, wie gesagt, über den unnötigen Umweg dieses zusätzlichen Blattes.

Daher möchte ich die Daten direkt in Database abgreifen und sie direkt, ohne Umweg, in Var_0020_... einsetzen.

Ein zusätzliches Problem ist die Tatsache, dass in Database in die Spalte A ein / eingesetzt wird, um die Datensätze und die Monate zu trennen, was Probleme in Formeln macht.

Allerdings habe ich eine Formel, die dem Rechnung tragen soll (in Var_20_... in den Spalten C, D, E); leider kriege ich sie aber nicht ans funktionieren.

Desweiteren frage ich mich, ob VBA nicht eine elegantere Lösung bietet anstatt über Excel-Formeln fahren zu müssen die man dann durch ihre Werte ersetzt.

Um beim Erstellen der angehängten Dateien so nahe wie möglich an der realen Situation zu sein habe ich folgendes gemacht: ich habe diese Database anonymisiert und in ein neues WB kopiert, das ich, wie das Original Base genannt habe, mit der realen .xls-Endung.
Die Spalten die für diese Aufgabe relevant sind:
A: Monat (Format MMMM YYYY)
Q, R, S: Spalten die die Daten enthalten, die in Var_0020_... eingefüllt werden müssen
BW: die Nummer anhand derer bestimmt wird, aus welchen Zeilen Daten entnommen werden müssen

z.B.: die Daten für die Nummer 100002 in Var_0020_Feb für Februar (A3) befinden sich in Database Zeile 133 (mit der Nummer in BW133)
Database Q133 --> Var_0020_Feb C3
               R133                               D3
               S133                               E3
Und das auszufüllende WB habe ich auch anonymisiert (Namen gelöscht), sodass es dem Original entspricht.

D.h. was ich möchte:
* eine Hilfe, damit diese Formeln in C3, D3, E3 (die nach unten kopiert werden) funktionieren
* oder, besser, eine VBA-Lösung ohne die Formeln.


Mit freundlichen Grüßen
Alooha


Angehängte Dateien
.xls   Base.xls (Größe: 806,5 KB / Downloads: 2)
.xlsx   Var_0020_Feb.xlsx (Größe: 34,01 KB / Downloads: 3)
Antworten Top
#2
Hallo,
ich habe eigentlich eine Lösung per Formel gefunden, aber wie gesagt ohne Formel wäre es VBAmäßig wohl eleganter.

Allerdings stoße ich dabei auf ein Problem, auf das ich in letzter Zeit immer öfter stoße: es schleichen sich @s in die Formeln ein, so auch hier:

Per VBA setze ich diese Formel in C3 ein:
Code:
ActiveCell.FormulaR1C1 = _
        "=SUMPRODUCT(IFERROR([Base.xls]Database!RC75:R1500C75=--RC1,0)*IFERROR(MONTH([Base.xls]
und das Resultat in der Zelle ist:


Code:
=SOMMEPROD(SIERREUR(@[Base.xls]Database!$BW3:$BW$1500=--$A3;0)*SIERREUR(MOIS(@[Base.xls]Database!$A3:$A$1500)=$C$1;0)*SIERREUR(@[Base.xls]Database!R3:R$1500;0))

und die Formel ergibt 0.

Ich konnte das Problem zwar so lösen:

Code:
Selection.Replace What:="@", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
aber besser wäre es, wenn diese @ überhaupt nicht erscheinen würden.


Weiß jemand, wie ich die verhindern kann?

MfG
Alooha
Antworten Top
#3
Hallöchen,

versuch mal mit Hochkommas zu arbeiten wie z.B. in Formeln mit Blatt- oder Dateinamen, die Leerzeichen enthalten
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Hallo,
danke für den Tipp!

Eine Lösung die ich gefunden habe, besteht darin, die Formeln direkt als Matrixformeln zu deklarieren:
Code:
Range("C3").FormulaArray = _
dann klappt es.
MfG
Alooha
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste