Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Range Variable in (Array-)Formel verwenden

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Range Variable in (Array-)Formel verwenden (634 mal gelesen)
Darksidy
Mitglied
Controller


Sehen Sie sich das Profil von Darksidy an!   Senden Sie eine Private Message an Darksidy  Schreiben Sie einen Gästebucheintrag für Darksidy

Beiträge: 16
Registriert: 29.05.2013

erstellt am: 19. Jan. 2016 16:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Guten Tag

Ich habe folgende Array-Formel:

{=SUM(IF(YEAR(Transfer!$C$2:$C$5)=YEAR(A4);IF(MONTH(Transfer!$C$2:$C$5)=MONTH(A4);Transfer!$E$2:$E$5;0);0))}

Diese summiert sämtliche Beträge, welche dem Jahr und Monat entsprechen. Soweit sogut. Nun möchte ich dies in einem Makro verwenden. Beim Aufzeichnen wird folgender Code erstellt:

Selection.FormulaArray = _
        "=SUM(IF(YEAR(Transfer!R2C3:R5C3)=YEAR(RC[-1]),IF(MONTH(Transfer!R2C3:R5C3)=MONTH(RC[-1]),Transfer!R2C5:R5C5,0),0))"

Der Bereich C2:C5 (und auch E2:E5 entsprechend) kann jedoch varieren – deshalb ermittle ich die letzte Zeile (LastRow) auf dem Blatt “Transfer“ und setze diese als Variable “LastRowTransfer”.

Wie kann ich nun diesen Bereich mit in obige Formel einbauen? Beispielsweise “...Range(“C2:C“ & LastRowTransfer)“ wie ansonsten üblich funktioniert nicht. Ist der Bereich zuerst als Variable zu definieren?

Desweiteren sind die Bezüge “R2C3:R5C3“ für mich ungünstig, da ich die obige Matrixformel in mehreren Zellen verwenden werde und dies in einen For-Loop einbaue. Mit der richtigen Adresse in der Formel sollte dies aber kein Problem darstellen.

Vielen Dank im Voraus für die Unterstützung!

Beste Grüsse
Darksidy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ThoMay
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von ThoMay an!   Senden Sie eine Private Message an ThoMay  Schreiben Sie einen Gästebucheintrag für ThoMay

Beiträge: 5239
Registriert: 15.04.2007

SWX 2019
Windows 10 x64

erstellt am: 19. Jan. 2016 18:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Darksidy 10 Unities + Antwort hilfreich

Hallo Darksidy.

Du schreibst:

Zitat:
Range(“C2:C“ & LastRowTransfer)“

Is da nicht ein Syntaxfehler beinhaltet?
Wenn du einen Bereich markierst sieht die Syntax so aus
Range("C2:G32")

Besser ist vielleicht, wenn du den Bereich mit
Range(cells(3,2),cells(3, Letzete Zeile))
wählst.

Gruß
ThoMay

------------------
Hast du Fragen?
Brauchst du
Schaut mal nach im Bereich
Alle Foren => Wissenstransfer.
oder
Konstrukteure Online hier bei CAD.de
Richtig fragen -
Nettiquette - Konstruktionshilfen - Systeminfo - Unities - CAD Freeware - Forenübersicht - 3D Modelle - SolidWorks Videos

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Darksidy
Mitglied
Controller


Sehen Sie sich das Profil von Darksidy an!   Senden Sie eine Private Message an Darksidy  Schreiben Sie einen Gästebucheintrag für Darksidy

Beiträge: 16
Registriert: 29.05.2013

erstellt am: 20. Jan. 2016 10:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi ThoMay

Danke für Deine Antwort. Das funktioniert auch nicht, da ich nach wie vor auch das Tabellenblatt "Transfer" nicht ansteuern kann.

Mit der Formel "Bereich.Verschieben" sowie "Anzahl2" habe ich den Bereich dynamisch gestalten können - dies die aktuellste Formel:

    Selection.FormulaArray = _
      "=SUM(IF(YEAR(OFFSET(Transfer!R2C3,,,COUNTA(Transfer!C[-1])-1))=YEAR(RC[-1]),IF(MONTH(OFFSET(Transfer!R2C3,,,COUNTA(Transfer!C[-1])-1))=MONTH(RC[-1]),(OFFSET(Transfer!R2C5,,,COUNTA (Transfer!C[-1])-1)),0),0))"
 

Allerdings erhalte ich dann im Loop dasselbe Problem wie oben erwähnt: Ich kann nur via "Transfer!R2C3" Bezug nehmen, nicht jedoch mit "Sheets("Transfer").Range("C2") oder Sheets("Transfer").Range(Cells(2,3),Cells(VARIABLE, 3)).

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Darksidy
Mitglied
Controller


Sehen Sie sich das Profil von Darksidy an!   Senden Sie eine Private Message an Darksidy  Schreiben Sie einen Gästebucheintrag für Darksidy

Beiträge: 16
Registriert: 29.05.2013

erstellt am: 20. Jan. 2016 10:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Für den Loop habe ich nun ein einfaches kopieren und einfügen der Formel der Zelle oberhalb eingefügt - das funktioniert.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Technischer Produktdesigner Munitionsentwicklung Future Gun System (m/w/d)

  • Unterstützung im Rahmen von Konstruktionsarbeiten bei Neuentwicklungen
  • Erstellung von 3D-Modellen sowie den Aufbau komplexer Baugruppen im CAD
  • Zeichnungsableitungen und Erstellung von norm- und fertigungsgerechten Konstruktionszeichnungssätzen inkl. Stücklisten
  • Neuaufbau alter Zeichnungssätze nach vorgegebenen Richtlinien
  • Überprüfung ...
Anzeige ansehenProduktdesign, Industriedesign
sto.teac
Mitglied
CAD Designer / LV series production


Sehen Sie sich das Profil von sto.teac an!   Senden Sie eine Private Message an sto.teac  Schreiben Sie einen Gästebucheintrag für sto.teac

Beiträge: 66
Registriert: 23.07.2010

erstellt am: 04. Feb. 2016 04:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Darksidy 10 Unities + Antwort hilfreich

falls es noch aktuell ist musst du nur die syntax korrigieren, dann sollte es funktionieren

ein Beispiel:

Code:
DIM WSData as Worksheet
DIM myRange as Range
DIM lastROW as Long

Set WSData = ActiveWorkbook.Worksheets("Transfer")
myRange = WSData.Range(cells(3,2),cells(3, lastROW))



lastROW muss natuerlich noch definiert/ermittelt werden, aber das scheinst du ja schon zu haben.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz