jere
Goto Top

Funktion Auto-ausfüllen mit Formeln und Arbeitsmappenbezug funktioniert nicht bei Zeilen

Excel 2003 sp3

Ich habe z.B. in dem Feld A1 die Formel =('arbeitsmappenname'!I11) stehen.
Wenn ich nun den Autoausfüller nehme und nach rechts ziehe,
erhöht sich der Buchstabe der Zeile von I auf J usw..

Ich möchte aber die Zahl erhöhen, z.Zt. kann ich das nur wenn ich nach unten Auto-ausfülle.

Die bekannten Tricks wie Strg drücken können mir keine Abhilfe schaffen,
ebenso nützt mir ein $ vor dem I nichts.

Bei ü800 Feldern wird mir das doch ein wenig viel Aufwand,
ich zähle auf eure Tipps ;)

Content-ID: 85104

Url: https://administrator.de/contentid/85104

Ausgedruckt am: 25.11.2024 um 03:11 Uhr

bastla
bastla 09.04.2008 um 15:58:34 Uhr
Goto Top
Hallo Jere!

Vielleicht holst Du ein wenig weiter aus und beschreibst auch das Ziel der ganzen Aktion bzw die Rahmenbedingungen (wie viele Zeilen/Spalten umfassen die Ausgangsdaten, sind diese zusammenhängend, etc) ...

Grüße
bastla
Jere
Jere 09.04.2008 um 16:08:51 Uhr
Goto Top
Gern, ich versuche es zumindest mal:

Ausgangsituation ist eine Excel-Datei mit mehreren Mappen.
Die erste Mappe umfasst eine Auswertung nach Stunden in dezimaler Form.

(Stell dir eine x/y Achse vor,
links steht etwas wie "Müll wegbringen" oder "einkaufen",
unten dann das Datum "01." oder "02." ...)

Die anderen Arbeitsmappen haben jeweils den Namen aus der x Achse, also "Müll" o.ä..

Ich klaue mir im Prinzip simpelst die Daten aus der Mappe "Müll" und trage von dort die enthaltenen Stunden (I11) in die Datumsübersicht.

Natürlich geht es in der Mappe nicht um meinen Haushalt, und wenn die ganze Sache nicht so umfangreich wäre, täte ich es einfach händisch manuell lösen.

Jedenfalls muss ich nun die Spalten des Datums füllen. Wie angedeutet, passiert dies über
=('Müll'!I11). Damit habe ich I11 erledigt. Jetzt allerdings möchte ich aus "müll"
die weiteren Stundenwerte für das Datum "02." usw eintragen. Normalerweise setze ich dazu
die Autofunnktion ein, sie kann mir so wunderbar einfach Zahlen erhöhen.

Wie beschrieben funktioniert das aber nur mit den Buchstaben im Verweis, nicht bei den Zahlen.

Ich hoffe, ich konnte ein wenig Licht in das verwirrende Problem bringen.
bastla
bastla 09.04.2008 um 16:18:34 Uhr
Goto Top
Hallo Jere!

Hast Du schon versucht, die entsprechenden Zellen zu kopieren und dann über "Bearbeiten / Inhalte einfügen... / Transponieren" wieder einzufügen?

Grüße
bastla
Jere
Jere 09.04.2008 um 16:22:35 Uhr
Goto Top
Nein, habe ich noch nicht probiert.

Ich habe es eben mal getestet,
merkwürdigerweise fehlt ihm auf einmal der Bezug zur Zeile/Spalte im eingefügten Ergebniss.

Wäre das nicht auch nur für ein Feld?
bastla
bastla 09.04.2008 um 16:37:08 Uhr
Goto Top
Hallo Jere!

merkwürdigerweise fehlt ihm auf einmal der Bezug zur Zeile/Spalte im eingefügten Ergebnis.
Es werden durch diese Aktion nur die aktuellen Daten mit vertauschten Zeilen/Spalten kopiert, aber keine Formeln/Bezüge erstellt.

Wenn Du tatsächlich die entsprechenden Bezüge benötigst, würde ich diese eher über ein VBA-Script erzeugen. Dafür müsste ich wissen, welchen Bereich der Quelltabelle (etwa I11:AM26) Du ab welcher Zelle der Zieltabelle verknüpfen willst.

Grüße
bastla
Jere
Jere 09.04.2008 um 17:00:12 Uhr
Goto Top
Ja, in der Tat brauche ich die bezüge.

Dein Hilfsangebot ist wirklich mehr als nett,
ich denke jedoch das ich eh schon zuviel in die Tabelle gesteckt habe,
noch eine Kraft mit in das Boot zu holen wäre einfach nicht gerecht(fertig).

Dennoch enormen Dank für den Versuch.

(Übrigens hat gestern ein Azubi versucht mich zu ärgern - werde jetzt doch noch jemanden in die Tabellte involvieren!)
bastla
bastla 09.04.2008 um 17:33:18 Uhr
Goto Top
Hallo Jere!

Derartiges kann man/frau ja vielleicht öfter einmal brauchen, daher trotzdem ein Versuch:
Sub ErstelleTransponierteBezuege()

'#### ab hier anpassen ####  
QuellTabelle = "Tabelle1"  
QuellBereich = "I11:AM35"  

ZielTabelle = "Tabelle2"  
ZielZelle = "B7"  
'#### bis hier anpassen ####  

QuellSpalte = Range(Split(QuellBereich, ":")(0)).Column  
QuellZeile = Range(Split(QuellBereich, ":")(0)).Row  
QuellSpaltenAnzahl = Range(QuellBereich).Columns.Count
QuellZeilenAnzahl = Range(QuellBereich).Rows.Count

ZielSpalte = Range(ZielZelle).Column
ZielZeile = Range(ZielZelle).Row

For i = 1 To QuellSpaltenAnzahl
    For j = 1 To QuellZeilenAnzahl
        Worksheets(ZielTabelle).Cells(ZielZeile + i - 1, ZielSpalte + j - 1).Formula = _
            "=" & QuellTabelle & "!" & _  
            Cells(QuellZeile + j - 1, QuellSpalte + i - 1).Address(False, False)
    Next
Next
End Sub
Sollte weitgehend selbsterklärend sein, daher habe ich etwas spärlich kommentiert ... face-wink

Grüße
bastla
Jere
Jere 09.04.2008 um 17:39:15 Uhr
Goto Top
33 Minuten hast du gebraucht, hör mal - jetzt bin ich wirklich gefrustet!

Nicht, das ich dafür alleine 2 Tage gebraucht hab, ich werd das morgen testen und wenn es funktioniert schick ich dir 2 Packungen Gummibärchen!
bastla
bastla 09.04.2008 um 17:45:26 Uhr
Goto Top
33 Minuten hast du gebraucht
Entschuldigung, musste zwischendurch kurz weg ... face-wink

Grüße
bastla

P.S.: ... um allerdings der Wahrheit die Ehre zu geben: Ich hatte schon von 17:00 angefangen (und ein wenig mit der Bildung der Adresse über ASCII-Codes herumgespielt), so kommt's dann tatsächlich einigermaßen auf die halbe Stunde hin.
unwrought
unwrought 21.02.2014 aktualisiert um 21:28:25 Uhr
Goto Top
Hallo,

Ich hatte diese Woche genau das selbe Problem und kann diesen Code verifizieren! Ich habe jedoch ein weiteres Problem:

Ich möchte in der gleichen Zieltabelle mehrere Spalten auf diese Weise ausfüllen.

Ich hab danach einfach den Code kopiert und die variablen anders benennt. Jedoch funktioniert dies nicht kann mir da jemand helfen mit dem Code? (siehe unten)

Sub ErstelleTransponierteBezuege()

'#### ab hier anpassen ####  
QuellTabelle = "'T1"  
QuellBereich = "K81:K106"  

ZielTabelle = "T2"  
ZielZelle = "H22"  
'#### bis hier anpassen ####  

QuellSpalte = Range(Split(QuellBereich, ":")(0)).Column  
QuellZeile = Range(Split(QuellBereich, ":")(0)).Row  
QuellSpaltenAnzahl = Range(QuellBereich).Columns.Count
QuellZeilenAnzahl = Range(QuellBereich).Rows.Count

ZielSpalte = Range(ZielZelle).Column
ZielZeile = Range(ZielZelle).Row

For i = 1 To QuellSpaltenAnzahl
    For j = 1 To QuellZeilenAnzahl
        Worksheets(ZielTabelle).Cells(ZielZeile + i - 1, ZielSpalte + j - 1).Formula = _
            "=" & QuellTabelle & "!" & _  
            Cells(QuellZeile + j - 1, QuellSpalte + i - 1).Address(False, False)
    Next
Next


'#### ab hier anpassen ####  
QuellTabelle2 = "'T1"  
QuellBereich2 = "I81:I106"  

ZielTabelle2 = "T2"  
ZielZelle2 = "H13"  
'#### bis hier anpassen ####  

QuellSpalte2 = Range(Split(QuellBereich2, ":")(0)).Column  
QuellZeile2 = Range(Split(QuellBereich2, ":")(0)).Row  
QuellSpaltenAnzahl2 = Range(QuellBereich2).Columns.Count
QuellZeilenAnzahl2 = Range(QuellBereich2).Rows.Count

ZielSpalte2 = Range(ZielZelle).Column
ZielZeile2 = Range(ZielZelle).Row

For k = 1 To QuellSpaltenAnzahl2
    For b = 1 To QuellZeilenAnzahl2
        Worksheets(ZielTabelle2).Cells(ZielZeile2 + k - 1, ZielSpalte2 + b - 1).Formula = _
            "=" & QuellTabelle2 & "!" & _  
            Cells(QuellZeile2 + b - 1, QuellSpalte2 + k - 1).Address(False, False)
    Next
Next
End Sub

Des weiteren Frage ich mich ob es möglich ist im Ausfüllprozess eine "WENN" formel einzubauen?

Sprich mit den Werten aus Tabelle1 für den definierten Quellbereich soll er den Wert nehmen und dies in eine gewünschte WENN formel packen.
Biber
Biber 21.02.2014 aktualisiert um 22:07:37 Uhr
Goto Top
Moin unwrought,

ich habe mal deinen Code in Code-Tags gesetzt, damit jemand die Chance zum Lesen hat.

Ich tippe auf die Zeile 04 und 29... so heisst die Quelltabelle bestimmt nicht.

Abgesehen davon wäre es mir lieber,
a) wir machen das mit einfachen Excelformeln und Auto-Ausfüllen statt mit VBA... das ist doch hier mit Melonen auf Spätzle geworfen oder wie das heisst
b) aber bitte in einem neuen Beitrag, der hier müffelt schon.

Grüße
Biber

P.S. Excelformellösung für dein erstes Beispiel:
In Tabelle T1, K$81:K$106 stehen Werte, die du transpirieren willst (oder wie das heisst)

Die sollen in Tabelle T2 Zelle H22 und danach in die Zellen rechts daneben..
Also in Zelle T2!H22 folgende Formel:
=INDEX(T1!$A$1:$AZ$999;SPALTE(A$1)+80; SPALTE($K$1))

...und mit Autoausfüllen nach rechts ziehen soweit nötig.