Excel 2016: Per VBA den Ausgangswert einer Operation mit dem Ergebnis überschreiben

Diskutiere und helfe bei Excel 2016: Per VBA den Ausgangswert einer Operation mit dem Ergebnis überschreiben im Bereich Microsoft Office im Windows Info bei einer Lösung; Hallo zusammen, die Aktion, die ich vorhabe, ist nur per VBA möglich, soviel weiß ich bereits. VBA ist für mich aber Neuland. Vielleicht kann mir... Dieses Thema im Forum "Microsoft Office" wurde erstellt von Philipp.Müller, 10. Januar 2018.

  1. Excel 2016: Per VBA den Ausgangswert einer Operation mit dem Ergebnis überschreiben


    Hallo zusammen,


    die Aktion, die ich vorhabe, ist nur per VBA möglich, soviel weiß ich bereits. VBA ist für mich aber Neuland. Vielleicht kann mir jemand mit einem Code-Vorschlag dienen.

    Problem: In einer Tabelle werden die ersten 10 Spalten wiederholt (kumulativ) aus anderen Tabellen einkopiert. In Spalte C ist eine Personalnummer (PNR) enthalten. Die soll durch den Klarnamen des Bearbeiters ersetzt werden. Da die Inhalte eingefügt werden, kann an der Stelle keine Formel zum Einsatz kommen, weil die dann überschrieben würde. Durch den gegebenen Aufbau ist es auch nicht möglich, dafür ab Spalte 11 eine Hilfspalte mit dem ermittelten Namen des Bearbeiters einzufügen.

    Die Tabellenlänge ist variabel, übersteigt 1000 Zeilen aber nicht.

    Beispiel: In C500 soll '123aBc' durch 'Max Muster' ersetzt werden.

    Die Tabelle mit der Zuordnung von PNR und Namen befindet sich auf einem anderen Sheet der Tabelle. Da die PNR auch noch Case-Sensitiv ist, wird der Namen nicht per sVerweis, sondern mittels einer Matrix-Formel mit dem Operator 'Identisch' gezogen.

    Fragen:

    1. Wie lautet der ungefähre Code; welche Variablen müssen verwendet werden?
    2. Können Formeln, die normalerweise in Zellen verwendet werden, 1:1 auch in VBA verarbeitet werden?
    3. Wie triggert man die Ausführung der Operation nach dem Einkopieren am geschicktesten an? (Per Button oder automatisch?)


    Danke & viele Grüße,

    Philipp Müller
     
  2. Claus Busch Win User

    Excel 2016: Per VBA den Ausgangswert einer Operation mit dem Ergebnis überschreiben

    Hallo Philipp,

    probiere mal:

    Sub Ersetzen()
    
    Dim LRow1 As Long, LRow2 As Long
    
    Dim i As Long
    
    Dim varCheck As Variant
    'Hier den Bereich und den Blattnamen
    
    'für die Tabelle mit den Zuordnungen anpassen
    
    With Sheets("Tabelle2")
    
       LRow2 = .Cells(.Rows.Count, "A").End(xlUp).Row
    
       varCheck = .Range("A1:B" & LRow2)
    
    End With
    'Hier den Bereich und den Blattnamen
    
    'für die Haupttabelle anpassen
    
    With Sheets("Tabelle1")
    
       LRow1 = .Cells(.Rows.Count, "C").End(xlUp).Row
    
       For i = LBound(varCheck) To UBound(varCheck)
    
          .Range("C1:C" & LRow1).Replace what:=varCheck(i, 1), _
    
             replacement:=varCheck(i, 2), MatchCase:=True
    
       Next
    
    End With
    
    End Sub
    Claus
  3. Philipp.Müller Win User

    Excel 2016: Per VBA den Ausgangswert einer Operation mit dem Ergebnis überschreiben

    Hallo Claus,

    das ging aber schnell und - funktioniert perfekt!!

    Genauso, wie ich mir das bestenfalls erhofft habe:)

    Vielen lieben Dank noch mal dafür!

    Grüße, Philipp
  4. Philipp.Müller Win User

    Excel 2016: Per VBA den Ausgangswert einer Operation mit dem Ergebnis überschreiben

    Hallo Claus,

    funktioniert nach Anpassung der Blattnamen auf Anhieb perfekt! Cool, bist echt ein Profi - vielen Dank dafür!

    Durch den gegebenen Aufbau der Tabellen wären noch folgende Detailanpassungen nötig. Kurz ein Beispiel zum Aufbau der Daten:

    Tabelle1

    Spalte C (Bearbeiter), C2 = 00524000007yHoeAAE

    Tabelle2

    Spalte A (Benutzer-ID), A2 = 00524000007yHoe

    Spalte B (Vorname), B2 = Max

    Spalte C (Nachname), C2 = Muster

    Meine Wünsche:

    1. Vor- und Nachnamen sollen zu 'Max Muster' verkettet in Tabelle1 geschrieben werden (im Moment wird nur der Vornamen übernommen)

    2. Die Benutzer-ID ist in Tabelle1 um drei (irrelevante) Zeichen länger als die in Tabelle2. Das führt im Beispiel zum Ergebnis 'MaxAAE'. Wie lassen sich die letzten drei Zeichen unterdrücken?

    3. Tatsächlich ist die Spaltenreihenfolge in Tabelle2 etwas anders, was die Position der Benutzer-ID betrifft:

    Tabelle2

    Spalte A (Vorname), A2 = Max

    Spalte B (Nachname), B2 = Muster

    Spalte C (Benutzer-ID), C2 = 00524000007yHoe

    (zum Test hatte die B-ID in Spalte A verschoben) Käme VBA auch mit diesem Aufbau klar?

    Da Tabelle2 gelegentlich durch eine aktuelle Fassung ersetzt wird, würde ich die nicht jedes Mal anpassen wollen, wenn es eine VBA-Lösung gäbe.

    Danke & Grüße, Philipp
  5. Philipp.Müller Win User

    Excel 2016: Per VBA den Ausgangswert einer Operation mit dem Ergebnis überschreiben

    Hallo Andreas,

    danke für die schnelle Antwort!

    Aus verschiedenen Gründen will ich keine zusätzlichen Spalten einfügen. U.a., weil auch andere Personen mit der Datei arbeiten sollen und erfahrungsgemäß die Gefahr der Fehlbedienung besteht;-(

    In Sachen VBA habe ich im Vorfeld gegoogelt, wie andere Anwender ähnliche
    Probleme lösen. Deshalb habe ich eine ungefähre Vorstellung, nur sind deren Lösungen nicht wirklich übertragbar. Vielleicht könnte ich es mir auch selber erarbeiten, aber das wäre ein steiniger Weg! Deshalb hoffe ich auf eine kleine Hilfestellung der Excel-Profis.

    Die Datei will ich wg. sensibler Daten ungern bereitstellen. Ob ein anonymisierter Inhalt noch für die Problemlösung taugt, kann ich jetzt nicht beurteilen. Ich hoffe Du verstehst das.

    Bei Bedarf könnte ich aber die Formel posten, die ich zu Testzwecken zur Ausführung aus einer Zelle heraus erstellt habe (ist noch nicht ganz final, da noch eine Rahmenfrage offen ist).

    Grüße, Philipp
  6. Claus Busch Win User

    Excel 2016: Per VBA den Ausgangswert einer Operation mit dem Ergebnis überschreiben

    Hallo Philipp,

    dann probiere mal:

    Sub Ersetzen()
    
    Dim LRow1 As Long, LRow2 As Long
    
    Dim i As Long
    
    Dim varCheck As Variant
    
    Dim c As Range
    
    Dim FirstAddress As String
    'Hier den Bereich und den Blattnamen
    
    'für die Tabelle mit den Zuordnungen anpassen
    
    With Sheets("Tabelle2")
    
       LRow2 = .Cells(.Rows.Count, "A").End(xlUp).Row
    
       varCheck = .Range("A2:C" & LRow2)
    
    End With
    
    'Hier den Bereich und den Blattnamen
    
    'für die Haupttabelle anpassen
    
    With Sheets("Tabelle1")
    
       LRow1 = .Cells(.Rows.Count, "C").End(xlUp).Row
    
       For i = LBound(varCheck) To UBound(varCheck)
    
          Set c = .Range("C1:C" & LRow1).Find(varCheck(i, 3), LookIn:=xlValues, _
    
             lookat:=xlPart, MatchCase:=True)
    
          If Not c Is Nothing Then
    
             Do
    
                c = varCheck(i, 1) & " " & varCheck(i, 2)
    
                Set c = .Range("C1:C" & LRow1).FindNext(c)
    
             Loop While Not c Is Nothing
    
          End If
    
       Next
    
    End With
    
    End Sub
    Sollte dies nicht funktionieren, poste mal ein paar mehr Beispiele, damit wir sehen können wie es sich mit den angehängten Zeichen und der Groß- bzw. Kleinschreibung verhält.

    Claus
  7. User Advert


    Hi,

    willkommen im Windows Forum!
Thema:

Excel 2016: Per VBA den Ausgangswert einer Operation mit dem Ergebnis überschreiben - Microsoft Office

Die Seite wird geladen...

Excel 2016: Per VBA den Ausgangswert einer Operation mit dem Ergebnis überschreiben - Similar Threads - Excel 2016 VBA

Forum Datum

Excel VBA Datei per Makro speichern

Excel VBA Datei per Makro speichern: Hallo zusammen,ich möchte gerne eine Exceldatei bestehend aus 10 Tabellenblättern mit einem Makro Button speichern. Die Datei soll unter dem Namen "Anwesenheitsliste" auf dem Desktop im Ordner...
Microsoft Office 17. Oktober 2022

Korrigierte Spalten überschreiben in Excel

Korrigierte Spalten überschreiben in Excel: Ich könnte mir vorstellen, dass mein Anliegen für die meisten hier ein Klacks ist, ich beisse mir jedoch gerade die Zähne dran aus:Ich habe eine Tabelle mit etwa 1000 Zeilen, eine Arbeitskollegin...
Microsoft Office 28. April 2022

WIe kann ich in Excel per VBA den Vollbildmodus beenden?

WIe kann ich in Excel per VBA den Vollbildmodus beenden?: Hallo zusammen, wenn ich Excel versehentlich im Windows - Vollbildmodus starte, dann funktioneren in VBA die Dimensionierungen mittels: Application.Top = xx Application .Left = xxx...
Microsoft Office 28. Juli 2020

Excel 2016 VBA.

Excel 2016 VBA.: Hallo! Folgendes Problem: Ich hab ein kleines Makro geschrieben welches die Anzahl zweier Tabellenblätter auslest und die Zeilen Anzahl in Tab1 an Tab2 anpasst. Der Hintergrund ist in Tab1 ist...
Microsoft Office 20. Januar 2020

EXCEL VBA: Formel berechnen und Ergebnis als Wert in Zelle schreiben

EXCEL VBA: Formel berechnen und Ergebnis als Wert in Zelle schreiben: hallo, ich muss in einer Excel-Datei sehr viele Berechnungen durchführen, was sehr viel Berechnungszeit braucht. Ich möchte deshalb die Formeln aus der Datei entfernen, in dem ein Makro die...
Microsoft Office 17. Mai 2019

Outlookvorlage per VBA öffnen und wieder als Outlookvorlage per VBA speichern

Outlookvorlage per VBA öffnen und wieder als Outlookvorlage per VBA speichern: Hallo, ich möchte folgende Problemstellung per VBA lösen: Aus Excel (hier: Excel 2016) heraus möchte ich eine Outlookvorlagendatei öffnen, dann bestimmte Daten aus Excel in die Outlookvorlage...
Microsoft Office 27. Juni 2018

Excel 2016, VBA

Excel 2016, VBA: Ich habe ein VBA-Modul , in dem ich möglichst große Arrays brauche, erhalte aber schon bei 0,42GB die Fehlermeldung "Nicht genug Speicher". In Windows 7 bekam ich diese Meldung erst bei >2GB....
Microsoft Office 28. Oktober 2016
Excel 2016: Per VBA den Ausgangswert einer Operation mit dem Ergebnis überschreiben solved
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.