EXCEL VBA Werte in Bezug auf andere Zelle einfügen

Start - (Microsoft Excel, VBA) Ende - (Microsoft Excel, VBA)

3 Antworten

Mir erschließt sich auf die Schnelle zwar nicht, wie die Werte in D und E korrelieren, aber wenn es eine Berechnung ist, kannst du doch in jede Zelle der Spalte E die entsprechende Formel schreiben.


Ist es keine Berechnung sondern ein händisches Eintragen, könntest du eine Vergleichsformel reinschreiben, die bei händischem Eintragen der Werte schlicht überschrieben wird.
Bspw in E22:

=WENN(UND(D22=D21;NICHT(E21=""));E21;"")

Wenn diese Formel in allen Zellen Spalte E steht, würde in diesem Fall E22 und E23 den Wert 1'799'901 erhalten. E24 bliebe leer. Du kannst dann in E24 einfach den Wert reinschreiben, der da reingehört und die Formel wird dabei überschrieben.

Gino111 
Fragesteller
 10.07.2013, 08:54

Sorry für die verspätete Meldung

Wollte mich noch für die Hilfe bedanken. Wende die Formel erfolgreich an.

0

ich weiß nicht, wie Du die Zellen in E bzw D per VBA findest, aber der relative Bezug zu einer Zelle ist zB,
Activecell.offset(2, -1).value
oder
Activecell.end(xldown).offset(2, -1).formula

Das offset(2, -1) versetzt die virtuelle Adresse der Bezugszelle um 2 Zeilen nach unten und 1 Spalte nach links.
Du brauchst dazu kein select, es geht also zB, wenn Du den Cursor in A1 hast,

Range("E5").end(xltoright).offset(0,1).formulalocal = Summe(B1:B5)

Der Cursor bewegt sich dabei nicht von A1 weg, die Formel wird in diejenige Zelle eingetragen, die Du mit Cursor in E1 und der Tastenkombination Ende+Pfeilnachrechs und noch einmal Pfeilnachrechts erreichen würdest.
Das Formeläquivalent dazu ist Bereich.verschieben()

(.Formulalocal brauchst Du dann, wenn deutsche Formelnamen gesetzt werden sollen, zur Übernahme einer anderen Formel ( ohne Relativbezug ! ) reicht .Formula)

Hoffe, Deine Frage richtig verstanden zu haben, was Du von wo nach wo unter welcher Bedingung kopieren möchtest, konnte ich nicht nachvollziehen!

Vllt hilft Dir noch: if Isempty(....Cells(5, 4).offset()) then ...

im Tabellenblatt: Cells(5, 4) ist E5,
in Bezug auf einen größeren Bereich ist es die Zelle der 5.Zeile und 4.Spalte des Bereichs, also Bereich(Cells(1,1).offset(4, 3)
(offset(0,0) ist ja dieselbe Zelle!

Wenn Du Cells(x, y) kennst, kannst du natürlich auch schreiben
Cells(x + 4, y + 3)

Iamiam  17.06.2013, 14:57

"im Tabellenblatt: Cells(5, 4) ist E5" <= sorry, falsch, ist D5 !

0
Iamiam  17.06.2013, 15:17
@Iamiam

jetzt glaube ich zu verstehe, was du willst:

Sub GleicheWerteErgänzen()
dim c as range
for each c in activesheet.range("D2:D999")
if not isempty(c) then
if c.value = c.offset(-1, 0).value then
c.offset(0, 1).value = c.offset(-1, 1).value
c.offset(0, 1).interior.color = c.offset(-1, 1).interior.color
endif
endif
next
end sub

könnte sein, dass Du das .interior.color nicht brauchst oder dass es mittlerweile nicht mehr funktioniert, ggf Codezeile löschen

0
Iamiam  24.06.2013, 14:00
@Iamiam

scheint Dich nicht wirklich zu interessieren?

0
Gino111 
Fragesteller
 17.08.2013, 16:36

Hallo Beim Stöbern bin ich auf deine Antwort betreff meiner Anfrage gestossen und mir wurde bewusst, dass ich mich dafür gar nicht bedankt habe. Dafür möchte ich mich hiermit entschuldigen und nachträglich ein GROSSES DANKESCHÖN aussprechen, denn mir ist klar, dass du dir bei deiner Erklärung und auch beim Beitrag danach Zeit für mich genommen, und dein Wissen zur Verfügung gestellt hast. Bin was VBA anbelangt gar nicht auf der Höhe. Muss mich mal damit vertiefter auseinandersetzen. Nochmals danke und alles Gute.

0

Dazu braucht man doch kein VBA, das geht mit einer Formel:

=WENN(D22=D21;E21)

Diese setzt du in deinem Beispiel in Zelle E22. Von dort kopierst du sie in alle Leerstellen von Spalte E

Kannst du auch grundsätzlich erst mal in E nach unten kopieren und dann nur die einzelnen Werte in E überschreiben.

Iamiam  24.06.2013, 14:02

mit dem runterkopieren einer Formel überschreibt man halt die bestehenden Einträgre oder man muss sie Zelle für Zelle einfügen!

0
Gino111 
Fragesteller
 10.07.2013, 08:57

Sorry für die verspätete Meldung

Wollte mich noch für die Hilfe bedanken. Die Formel funktioniert.

0