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.

Zelle auslesen und in Formel ausgeben
#1
Ich habe folgenden bestehen Code:

Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'Wenn etwas geändert wird
 
If Target.Column = 1 Then
           If Not IsEmpty(Cells(Target.Row, 1)) Then
           ActiveCell.FormulaR1C1 = _
        "=IF(RC[-1]="""","""",VLOOKUP(Anweisungen!RC[-1],Panels!R5C2:R100C3,2,FALSE))"
           Cells(Target.Row, 3).Value = Date
           Exit Sub
      End If
  End If
 
    If Target.Column = 6 Then 'in Spalte E
         
        If ActiveSheet.Cells(Target.Row, 1).Value <> vbNullString Then 'und Spalte A nicht leer  _
 _
ist
            strFind = ActiveSheet.Cells(Target.Row, 1).Value
                   
            Set rngFind = ThisWorkbook.Worksheets("Top30").Columns(7).Find(What:=strFind,  _
LookAt:=xlPart) 'suche Wert aus Spalte A in Top30 in Spalte B
       
 
            If Not rngFind Is Nothing Then 'Wenn Wert existiert dann
                ThisWorkbook.Worksheets("Top30").Activate
                Top30alleanzeigen
                Top30anzeigen
                ThisWorkbook.Worksheets("Anweisungen").Activate
            Else 'sonst
 
                With ThisWorkbook.Worksheets("Top30")
                    q = .Cells(6, 5).CurrentRegion.Rows.Count + 6
                    .Cells(q, 1).FormulaR1C1 = "=RANK(RC[2],C[2])"
                    .Cells(q, 2).FormulaR1C1 = "=""" & strFind & "  (""&COUNTIFS(Anweisungen!C[- _
 _
1],""" & strFind & """,Anweisungen!C[3],""ausgezahlt"")& ""x)"""
                    .Cells(q, 3).FormulaR1C1 = "=SUMIFS(Anweisungen!C[1],Anweisungen!C[-2],""" & _
 _
 strFind & """,Anweisungen!C[2],""ausgezahlt"")"
                    .Cells(q, 4).FormulaR1C1 = "=IF(ISERROR(VLOOKUP(IFERROR(LEFT(RC[-2],SEARCH(" _
 _
" "",RC[-2],1) -1),RC[-2]),Panels!C[-2],1,0)),""nicht aktiv"",""aktiv"")"
                     
                    .Cells(q, 6).FormulaR1C1 = "=RANK(RC[2],C[2])"
                    .Cells(q, 7).FormulaR1C1 = "=""" & strFind & "  (€ ""&TEXT(SUMIFS( _
Anweisungen!C[-3],Anweisungen!C[-6],""" & strFind & """,Anweisungen!C[-2],""ausgezahlt""),""#.## _
0,00"") & "")"""
                    .Cells(q, 8).FormulaR1C1 = "=COUNTIFS(Anweisungen!C[-7],""" & strFind & """, _
 _
Anweisungen!C[-3],""ausgezahlt"")"
                    .Cells(q, 9).FormulaR1C1 = "=IF(ISERROR(VLOOKUP(IFERROR(LEFT(RC[-2],SEARCH(" _
 _
" "",RC[-2],1) -1),RC[-2]),Panels!C[-7],1,0)),""nicht aktiv"",""aktiv"")"
                     
                    .Cells(q, 11).FormulaR1C1 = "=RANK(RC[2],C[2])"
                    .Cells(q, 12).FormulaR1C1 = "=""" & strFind & "  (€ ""&TEXT(SUMIFS( _
Anweisungen!C[-8],Anweisungen!C[-11],""" & strFind & """,Anweisungen!C[-7],""ausgezahlt""),""#.# _
#0,00"") & "")"""
                     hier bräuchte ich den neuen Code
                 .Cells(q, 14).FormulaR1C1 = "=IF(ISERROR(VLOOKUP(IFERROR(LEFT(RC[-2], _
SEARCH("" "",RC[-2],1) -1),RC[-2]),Panels!C[-12],1,0)),""nicht aktiv"",""aktiv"")"
                     
                    ThisWorkbook.Worksheets("Top30").Activate
                    Top30alleanzeigen
                    Top30anzeigen
                    ThisWorkbook.Worksheets("Anweisungen").Activate
                End With
            End If
             
        End If
     
    With ThisWorkbook.Worksheets("Anweisungen")
      If .Cells(Target.Row, 6) = "j" Then
           .Cells(Target.Row, 7) = Date
      End If
 End With
     
    End If
 
End Sub

Diesen will ich nun wie folgt erweitert haben.

Ich will, dass aus dem Tabellenblatt "Panels" aus der Spalte "G" in Bezug auf die Spalte "B", welchen ich im Tabellenblatt "Anweisungen" in Spalte "A" eingegeben habe, ein Datum ausgelesen bekommen und dann fix in der Formel stehen haben, welche sich im Tabellenblatt "Top30" in der Spalte "M" befinden soll. So sollte dann der Code aussehen:

=DATEDIF("das ermittelte Datum";HEUTE();"M")/(ZÄHLENWENNS(Anweisungen!A:A;"hugo";Anweisungen!E:E; "ausgezahlt"))

Leider bekomme ich es nicht hin. Ich hoffe, dass mir jemand helfen kann. Die nötige Datei habe ich mit angehängt.

Diesen Beitrag gibt es auch in weiteren Foren:

Herber: http://www.herber.de/cgi-bin/callthread....ex=1538672
Msoffice: http://www.ms-office-forum.net/forum/sho...p?t=339591
Online-excel: http://www.online-excel.de/fom/fo_read.php?f=1&bzh=0&h=89665#a123x
Office-fragen: http://www.office-fragen.de/index.php/to...890.0.html


Angehängte Dateien
.xls   PuU - Kopie.xls (Größe: 636,5 KB / Downloads: 4)
Excel Version 2016
Antworten Top
#2
Hola,

verlinkst du bitte deine Fragen in den verschiedenen Foren untereinander?
Danke.

Gruß,
steve1da
Antworten Top
#3
Ja, werde ich machen. Ich habe bewusst in andere Foren das gleiche Thema eröffnet, weil ich schon in anderen keine Antwort erhalten habe.
Excel Version 2016
Antworten Top
#4
Hallo,


Zitat:weil ich schon in anderen keine Antwort erhalten habe

liegt wohl daran, dass keiner so richtig verstehen kann, was Du wo haben willst. Es wäre sinnvoll, zu kennzeichnen, wo was stehen soll und warum!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#5
Hallo!

Ich werde es eben nochmals probieren:

Im Tabellenblatt "Anweisungen" gebe ich in der Spalte "A" ein Wort, welches es im Tabellenblatt "Panels" ebenfalls in der Spalte "B" gehen sollte. Wird dieser Wert gefunden, soll aus dem Tabellenbaltt "Panels" aus der gleichen Zeile ein Datum aus der Spalte "G" ermittelt werden und in eine Formel als fixen Wert eintragen. Diese Formel sollte wie folgt aussehen:

=DATEDIF("das ermittelte Datum";HEUTE();"M")/(ZÄHLENWENNS(Anweisungen!A:A;"hugo";Anweisungen!E:E; "ausgezahlt"))

Diese Formel sollte dann im Tabellenblatt "Top30" in der Spalte "M" stehen.
Übrigens, das Wort "hugo" wie oben in der Formel geschrieben, ermittle ich mir bereits aus dem bestehen Code und stellt hier nur ein Beispiel dar. "Hugo" darf also nicht fix in der Formel stehen. Hugo ist der Wert, welchen ich im Tabellenblatt "Anweisungen" in der Spalte "A" eingegeben habe und nachder auch im Tabellenblatt "Panels" gesucht wird.

In meinem ersten Beitrag ganz oben habe ich eine Stelle, wo folgende Passage zu finden sein sollte:

Code:
hier bräuchte ich den neuen Code
Excel Version 2016
Antworten Top
#6
Hallo,

teste mal:


Code:
="=DATEDIF(DateValue(" & DateValue(strfind) & "),TODAY()," & """M""" & ")/(COUNTIFS(Anweisungen!A:A," & """hugo""" & ",Anweisungen!E:E," & """ausgezahlt""" & "))"
Gruß Atilla
Antworten Top
#7
Hallo!

Danke für deinen Code. Das Hauptproblem besteht aber darin, wie der Code aussehen soll, dass er eben das Datum ermittelt. Wie lautet da der Code und wo genau gehört er eingefügt?
Excel Version 2016
Antworten Top
#8
Hallo,

es wäre interessant zu wissen, welches Datum da errechnet werden soll. Dann wäre die Frage, ob diese Formel in jeder Zeile rechnen soll?

Mittlerweile habe ich mir die Formel in Panels!I5 mal vorgenommen. Mit Excel2010ff könnte man die Formel verkürzen und ohne Matrix gestalten:


Code:
=WENN(ZÄHLENWENNS(Anweisungen!A:A;Panels!B5;Anweisungen!F:F;"j")>0;"1. Auszahlung am: "&TEXT(AGGREGAT(15;6;Anweisungen!G:G/(Anweisungen!A:A=Panels!B5)/(Anweisungen!F:F="j");1);"TT.MM.JJJJ")&WENN(ZÄHLENWENNS(Anweisungen!A:A;Panels!B5;Anweisungen!F:F;"j")>1;"letzte Auszahlung am: "&TEXT(AGGREGAT(14;6;Anweisungen!G:G/(Anweisungen!A:A=Panels!B5)/(Anweisungen!F:F="j");1);"TT.MM.JJJJ");"")&" ØDauer "&SUMMENPRODUKT((Anweisungen!$G$3:$G$3000-Anweisungen!$C$3:$C$3000)*(Anweisungen!$A$3:$A$3000=B5)*(Anweisungen!$F$3:$F$3000="j"))/ZÄHLENWENNS(Anweisungen!A:A;Panels!B5;Anweisungen!F:F;"j")&"Tage";"noch keine Auszahlung")
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#9
Es soll kein Datum errechnet werden, sondern einfach der Wert einer bestimmten Zelle einfach in einer Formel ausgegegeben werden. Ich gebe jetzt einmal ein Beispiel an:

Ich gebe im Tabellenblatt "Anweisungen" in der Spalte "A" "hugo" ein. Jetzt soll im Tabellenblatt "Panels" in der Spalte "B" nach "hugo" gesucht werden und dann in der gleichen Zeile die Spalte "G" "22.09.2007" ausgelesen werden. Ich hoffe, dass es jetzt verständlicher ist, was ich will.

Die Formel sollte dann wie folgt im Tabellenblatt "Top30" in der Spalte "M" aussehen:

=DATEDIF("22.09.2007";HEUTE();"M")/(ZÄHLENWENNS(Anweisungen!A:A;"hugo";Anweisungen!E:E;"ausgezahlt"))

Übrigens, danke für den Input der Matrixformel.
Excel Version 2016
Antworten Top
#10
Hallo,

statt dem dämlichen Hugo solltest Du vielleicht mal ein konkretes Beispiel angeben!!!!!!!!!!!!!!!!!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top


Gehe zu:


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