Thema Datum  Von Nutzer Rating
Antwort
29.01.2016 17:27:44 Rog
NotSolved
29.01.2016 20:12:36 Gast94769
NotSolved
29.01.2016 20:44:53 Gast15755
NotSolved
Blau VBA Excel Abfrage Zellwert aufgrund Prüfung gleicher Spaltenüberschrift
31.01.2016 10:11:49 Gast52793
NotSolved
07.02.2016 09:50:03 Rog
NotSolved
07.02.2016 14:10:55 Gast6218
NotSolved
07.02.2016 17:37:58 Rog
NotSolved
07.02.2016 19:49:18 Gast28
NotSolved
07.02.2016 20:54:16 Gast21633
NotSolved
08.02.2016 15:28:07 Gast81421
NotSolved

Ansicht des Beitrags:
Von:
Gast52793
Datum:
31.01.2016 10:11:49
Views:
1120
Rating: Antwort:
  Ja
Thema:
VBA Excel Abfrage Zellwert aufgrund Prüfung gleicher Spaltenüberschrift

Moin!

Ne, hat mich eher ein wenig verwirrt. :-D Aber ich glaube ich weiß, was du haben möchtest. Blatt 1 ist dein Bezug. In Zeile 1 stehen die Monate ( drei Buchstaben des Monats mit Jahr) und in Spalte A die Blätter. Der Code soll dann zu jedem Monat und Blatt dort die 2. Zeile des zugehörigen Monats finden.

Der Code unten macht das. Da ich nicht genau weiß, wie die Datei wirklich aussieht. Er geht in Tabelle 1 die Zeile 1 durch. Wenn dort ein Eintrag ist der den Wert 16 enthält wird das als Monat interpretiert und in den anderen Tabellen gesucht. (könnte man auch ändern). Er würde also nicht nur Jan und Feb sondern alle Monate überprüfen. Da du gesagt, hast, dass die Dateien identisch sind (also die Namen so auch in den anderen Blättern), habe ich jetzt nicht mehr überprüft, ob es die dort gibt. Und die Blattnamen müssen auch vorhanden sein. Falls ein Eintrag in Spalte A kein Blattname ist, passiert in der Zeile nix - die wird dann ignoriert.

Schau mal bitte, ob das so passt. Schönen Sonntag noch

Sub übertrag()
Dim lzeile As Long
Dim lspalte As Long
Dim blätter()
Dim blatt
Dim anzahl As Long
Dim i As Long
Dim j As Long
Dim index

ReDim blätter(0)
anzahl = 0

For Each blatt In Worksheets
    anzahl = anzahl + 1
    ReDim Preserve blätter(anzahl)
    blätter(anzahl) = blatt.Name
Next blatt

lzeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
lspalte = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column

For i = 5 To lzeile
    If ActiveSheet.Cells(i, 1) <> "" Then
    index = ActiveSheet.Cells(i, 1)
        If UBound(Filter(blätter, index)) > -1 Then
            For j = 1 To lspalte
                If InStr(1, ActiveSheet.Cells(1, j), "16", vbTextCompare) Then
                      ActiveSheet.Cells(i, j) = Worksheets(index).Cells(2, Application.WorksheetFunction.Match(ActiveSheet.Cells(1, j), Worksheets(index).Rows(1), 0))
                End If
            Next j
        End If
    End If
Next i

End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen