Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Formel in Zelle schreiben, wenn Nachbarzelle <> ""

Forumthread: Formel in Zelle schreiben, wenn Nachbarzelle <> ""

Formel in Zelle schreiben, wenn Nachbarzelle <> ""
Florian
Guten Tag
Gibt es eine Möglichkeit in einem Worksheet per VBA die Anweisung zu hinterlegen, dass den Zellen einer bestimmten Spalte eine Formel übergeben wird, sobald die jeweilige Nachbarzelle den Wert "" aufweist.
Für Tipps bedanke ich mich bereits im voraus.
Gruss Florian
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Ja, das geht ... oT
29.10.2009 10:25:57
Matthias
AW: Formel in Zelle schreiben, wenn Nachbarzelle <> ""
29.10.2009 10:48:40
Tino
Hallo,
hier mal eine Version, kannst ja mal testen.
Besser wäre natürlich zu wissen wie der Wert in der Spalte 5 (im Beispiel) entsteht.
Handeingabe oder Formel (was für eine Formel)?
Kommt als Code in die entsprechende Tabelle.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range, rngZellen As Range

'Columns(5)= Spalte ; .Offset(1, 0) = wenn Tabelle eine Überschrift hat 
Set Bereich = Intersect(Columns(5), ActiveSheet.UsedRange.Offset(1, 0))

If Not Bereich Is Nothing Then
 With Application
  .ScreenUpdating = False
  .EnableEvents = False
         Set Bereich = Bereich.Offset(0, 1)
        
         Bereich.FormulaR1C1 = "=If(RC[-1]<>"""",True,"""")"
        
         On Error Resume Next
            Set rngZellen = Bereich.SpecialCells(xlCellTypeFormulas, 4)
            Bereich.Value = ""
         On Error GoTo 0
        
         If Not rngZellen Is Nothing Then
          rngZellen.FormulaR1C1 = "=TODAY()"
         End If
  .ScreenUpdating = True
  .EnableEvents = True
 End With
End If

End Sub
Gruß Tino
Anzeige
AW: Formel in Zelle schreiben, wenn Nachbarzelle <> ""
29.10.2009 11:22:44
Florian
Hallo Tino
Besten Dank für dein Beispiel! Das hilft mir auf jeden Fall schon mal weiter. Ich werde versuchen die Anwendung für meine Zwecke anzupassen.
Der Wert in Spalte 5 entsteht per DropDown Auswahl. Die Formel in der Spalte daneben, welche per VBA geschrieben werden soll, sieht so aus:
=WENN(E4"";INDEX(Grunddaten!$B$2:$CI$696;VERGLEICH(D4;Grunddaten!$A$2:$A$696);VERGLEICH(E4; Grunddaten!$B$1:$CI$1;0));"") 
Gruss Florian
Anzeige
müsste funktionieren.
29.10.2009 11:40:07
Tino
Hallo,
teste mal.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range, rngZellen As Range

'Columns(5)= Spalte ; .Offset(1, 0) = wenn Tabelle eine Überschrift hat 
Set Bereich = Intersect(Range(Columns(4), Columns(5)), Target)

If Not Bereich Is Nothing Then
 With Application
  .ScreenUpdating = False
  .EnableEvents = False
        
        If Bereich.Columns(1).Column = 4 Then
         Set Bereich = Bereich.Columns(1).Offset(0, 2)
        Else
         Set Bereich = Bereich.Columns(1).Offset(0, 1)
        End If
         
         Bereich.FormulaR1C1 = "=If(AND(RC[-1]<>"""",RC[-2]<>""""),True,"""")"

         On Error Resume Next
            Set rngZellen = Bereich.SpecialCells(xlCellTypeFormulas, 4)
            Bereich.Value = ""
         On Error GoTo 0

         If Not rngZellen Is Nothing Then
          rngZellen.FormulaR1C1 = "=INDEX(Grunddaten!R2C2:R696C87,MATCH(RC[-2],Grunddaten!R2C1:R696C1),MATCH(RC[-1], Grunddaten!R1C2:R1C87,0))"
         End If
  .ScreenUpdating = True
  .EnableEvents = True
 End With
End If

End Sub
Gruß Tino
Anzeige
AW: müsste funktionieren.
29.10.2009 13:16:04
Florian
Hallo Tino
Es funktioniert! Besten Dank.
Jetzt muss ich nur noch versuchen, das ganze nachzuvollziehen, damit ich auch was lerne aus der Sache...
Gruss Florian
AW: Formel in Zelle schreiben, wenn Nachbarzelle <> ""
29.10.2009 11:34:22
Florian
Hallo Tino
Besten Dank für dein Beispiel! Das hilft mir auf jeden Fall schon mal weiter. Ich werde versuchen die Anwendung für meine Zwecke anzupassen.
Der Wert in Spalte 5 entsteht per DropDown Auswahl. Die Formel in der Spalte daneben, welche per VBA geschrieben werden soll, sieht so aus:
=WENN(E4"";INDEX(Grunddaten!$B$2:$CI$696;VERGLEICH(D4;Grunddaten!$A$2:$A$696);VERGLEICH(E4; Grunddaten!$B$1:$CI$1;0));"") 
Gruss Florian
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Formel in Zelle schreiben, wenn Nachbarzelle nicht leer ist


Schritt-für-Schritt-Anleitung

Um in Excel eine Formel in einer Zelle zu schreiben, wenn die Nachbarzelle nicht leer ist, kannst Du VBA (Visual Basic for Applications) verwenden. Folge diesen Schritten:

  1. Öffne das Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle im Projektfenster das entsprechende Arbeitsblatt aus, für das die Anweisung gelten soll.

  3. Kopiere und füge den folgenden Code in das Codefenster ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim Bereich As Range, rngZellen As Range
    
       Set Bereich = Intersect(Columns(5), ActiveSheet.UsedRange.Offset(1, 0))
    
       If Not Bereich Is Nothing Then
           With Application
               .ScreenUpdating = False
               .EnableEvents = False
    
               Set Bereich = Bereich.Offset(0, 1)
               Bereich.FormulaR1C1 = "=IF(RC[-1]<>"""", TRUE, """")"
    
               On Error Resume Next
               Set rngZellen = Bereich.SpecialCells(xlCellTypeFormulas, 4)
               Bereich.Value = ""
               On Error GoTo 0
    
               If Not rngZellen Is Nothing Then
                   rngZellen.FormulaR1C1 = "=TODAY()"
               End If
               .ScreenUpdating = True
               .EnableEvents = True
           End With
       End If
    End Sub
  4. Schließe den VBA-Editor und teste die Funktionalität, indem Du einen Wert in die Nachbarzelle eingibst.


Häufige Fehler und Lösungen

  • Fehler: Der Code wird nicht ausgeführt.

    • Lösung: Stelle sicher, dass die Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter > Einstellungen für Makros und aktiviere die Makros.
  • Fehler: Die Formel wird nicht korrekt in die Zelle geschrieben.

    • Lösung: Überprüfe, ob die richtige Spalte im Code angegeben ist. Der Code setzt voraus, dass die Nachbarzelle in Spalte 5 ist.

Alternative Methoden

Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du auch die Funktion WENN in einer Excel-Zelle nutzen, um das gewünschte Verhalten zu erreichen. Zum Beispiel:

=WENN(E4<>"";INDEX(Grunddaten!$B$2:$CI$696;VERGLEICH(D4;Grunddaten!$A$2:$A$696);VERGLEICH(E4;Grunddaten!$B$1:$CI$1;0));"")

Diese Formel überprüft, ob die Zelle E4 nicht leer ist, und gibt den entsprechenden Wert aus den Grunddaten zurück.


Praktische Beispiele

Angenommen, Du hast eine Dropdown-Auswahl in Spalte 5, und Du möchtest in der Nachbarzelle (Spalte 6) einen Wert basierend auf der Auswahl in Spalte 5 anzeigen. Verwende dazu den VBA-Code aus der Schritt-für-Schritt-Anleitung oder die oben genannte Formel, um die Werte dynamisch zu aktualisieren.


Tipps für Profis

  • Nutze Application.ScreenUpdating = False, um die Geschwindigkeit zu erhöhen, während Du große Datenmengen bearbeitest.
  • Experimentiere mit verschiedenen Formeln in VBA, um das Verhalten der Zellen weiter anzupassen.
  • Wenn Du oft mit ähnlichen Anfragen arbeitest, speichere den VBA-Code als Modul, um ihn schnell in anderen Projekten verwenden zu können.

FAQ: Häufige Fragen

1. Kann ich den Code für andere Spalten anpassen?
Ja, Du kannst die Spaltennummer im Code ändern, um die Formel in anderen Spalten zu verwenden.

2. Funktioniert dieser Ansatz in Excel 365?
Ja, der VBA-Code und die Formeln funktionieren in Excel 365 sowie in anderen Versionen von Excel, die VBA unterstützen.

3. Wie kann ich die Bedingungen für die Nachbarzelle ändern?
Du kannst die Bedingungen in der IF-Formel nach Deinen Bedürfnissen anpassen, z.B. RC[-1]<>"" zu RC[-1]="Ja" ändern, um auf spezifische Werte zu prüfen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige