1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Excel - Adressierungsproblem mit VBA

Discussion in 'Office-Programme' started by Alf_2, Mar 14, 2008.

Thread Status:
Not open for further replies.
  1. Alf_2

    Alf_2 Kbyte

    Hallo :-),
    folgendes Problem besteht:
    In einer Zelle (z.B. Z24S11 bzw. K24) steht eine Funktion, die u.a. den Wert einer anderen Zelle, z.B. zwei Zeilen höher und gleiche Spalte (Z22S11 bzw. K22) auswerten soll, und zwar mit "WorksheetFunction.CountIf(...)". Ich hab den totalen Blackout und komme nicht dahinter, wie ich diese auszuwertende Zelle adressieren soll.
    Sollte nicht eigentlich "cell.offset" funktionieren ? Ergebnis ist aber immer #Wert.
    Oder ist da vorher noch was zu "DIM"ensionieren und wie?
    Anders gesagt, da die Funktion vielmals in der Tabelle auftaucht, muß ich auf die höher liegende Zeile mittels Variable zugreifen können: Mit der absoluten Adresse klappt es, aber was schreibe ich für die 22 ?

    x = WorksheetFunction.CountIf(Cells(22, 11), "=2") + ....das wiederholt sich paarmal mit verschiedenen Spalten

    Danke für Hilfe ...
     
  2. Urs2

    Urs2 Megabyte

    Ob ich das auch richtig verstanden habe?
    Wenn eine Zelle den Wert 2 hat, soll dafür jeweils der Wert 1 in die zwei Zeilen darunterliegenden Zelle kommen, wenn der Wert nicht 2 ist, dann nichts.

    Direkt im Tabellenblatt wäre das mit ZählenWenn(K22;2) zu machen.

    Wenn der Zählwert für eine Zelle ins Makro soll, dann >
    x = 0
    If Worksheets(1).Range("K22") = 2 Then x = 1
    usw

    Wenn die Zählwerte aller Zellen addiert werden sollen, dann
    x = 0
    If Worksheets(1).Range("K22") = 2 Then x = x + 1
    If Worksheets(1).Range("Z22") = 2 Then x = x + 1
    If Worksheets(1).Range("P22") = 2 Then x = x + 1
    usw

    Zurückschreiben des im Makro bearbeiteten x-Wertes ins Blatt mit
    Worksheets(1).Range("Z24").Value = x

    Gruss Urs
     
  3. Alf_2

    Alf_2 Kbyte

    Ja, ist im Prinzip schon richtig verstanden. Nur - ich wollte eben, ausgehend von der Adresse der Zelle, in der die Funktion steht, einen Terminus für die Zeilenangabe, denn die Formel taucht schlußendlich in etlichen Zeilen auf. Und in der zur Funktion gehörenden Prozedur soll sie nur einmal stehen und nicht für jede betr. Zeile extra.
    Aber ich hab inzwischen was gefunden. Innerhalb der Funktion

    aktAddress = Application.Caller.Address
    r = Range(Application.Caller.Address).Row
    c = Range(Application.Caller.Address).Column


    r und c ergeben dann die tatsächlichen Zeilen- und Spaltennummern der Zelle, die die Funktion beinhaltet und lassen sich dann mit Cells(r +/- x ,c +/- x) prima verwenden. Klappt !

    Trotzdem Danke für die Mühe.
     
Thread Status:
Not open for further replies.

Share This Page