2017-03-08 8 views
0

Ich habe Probleme mit M $ Excel versucht, eine Formel zu erstellen, um Ergebnisse auf ein anderes Blatt zu kopieren. Ich denke, ich muss es vielleicht VBA.Excel 2010 - Kopieren von gefilterten Ergebnissen in neues Blatt

Ich habe drei Blätter. Eine rief Schüler, eine rief Tage und die andere, Stundenplan.

Schüler Spalte A „Namen“ und die Spalte B ist eine Dropdown-Liste „Day“ mit freien Tagen der Woche als Optionen.

Ich versuche, eine Formel zu erstellen, die in Spalte B aussieht und bestimmt, welcher Tag kopiert dann Namen der Schüler aus der Spalte gewählt wurde A (Namen) in Blatt Fahrplan Spalte A; Zeile 1, 2, 3 usw.

Ist das möglich?

Ich habe dies habe in meinem Zeitplan Blatt

=IF(SUM(COUNTIF(Pupils!$G$2:$G$663,Days!$C$2)),"true","false") 

aber dies nur überprüft, ob die Ergebnisse wahr sind, was sie sind.

Machen meine Geschwister Sinn?

Danke fürs suchen.

Sam

+0

Bezieht sich jede Zeile in 'Timetable' auf ein anderes Datum? Was bedeutet die von Ihnen gepostete Formel in Bezug auf die Angabe des Datums in "Timetable"? Es würde helfen, einige Beispieldaten mit der erwarteten Ausgabe zu sehen. – BruceWayne

Antwort

0

Wenn Sie VBA verwenden möchten, ist ein einfacher Ansatz, einfach alles zu kopieren und dann die Auswertung auf Blättern durchzuführen ("Zeitplan").).

Dim i as integer 
Dim LR as Long 

LR = Sheets("Pupils).Cells(Rows.Count, "A").End(xlUp).Row 

Sheets("Pupils").Range("A1:B"&LR).Copy Sheets("Timetable").Range("A1:B"&LR) 

For i = LR to 2 Step -1 
    If Sheets("Timetable").Cells(i,2).Value=Sheets(Pupils).Cells(2,2).Value Then 
    Else: Sheets("Timetable").Rows(i).Delete 
    End If 
Next i  

ging ich den Weg der mit einer if-Anweisung, wo, wenn Sie Ihren Tag in Spalte B die Schüler Registerkarte Zelle B2 übereinstimmt, dann passiert nichts, aber wenn es nicht übereinstimmt, ist es die Zeile löscht. Beachten Sie, dass die For-Schleife einen negativen Schritt hat, da die letzte Zeile definiert ist, BEVOR Sie mit dem Löschen beginnen. Sie möchten also von unten nach oben rückwärts gehen.

Edit:

Wenn Sie eine Zelle auf Sheets („Fahrplan“) machen wollen, sagt das Datum, könnten Sie die If-Anweisung ändern, dass die Zelle zu reflektieren, z.B.

Sie können auch ein Benutzerformular erstellen, um den Wochentag auszuwählen, wenn Sie sich wirklich damit beschäftigen möchten. Sie würden die Eingabe als Variable speichern und zu ähnlichen vergleichen:

Dim DayInput as String 

DayInput=CheckBox1.Value 

If Sheets("Timetable").Cells(i,2).Value=DayInput Then 
+0

Dies ist die Route, die ich gewählt habe. Ich habe den Code ein wenig und Ausgabe auf ein neues Blatt geändert: 'code'Sub run_me() Dim i As Integer Dim LR As Long LR = Sheets ("Schüler") Zellen (Zeilen. .Count, "F"). Ende (xlUp) .Row Blätter ("Schüler"). Bereich ("B1: G700" & LR) .Kopierblätter ("Ausgabe"). Bereich ("A1: C20" & LR) Für i = LR Nach 2 Schritt -1 Wenn Sheets ("Ausgabe"). Zellen (i, 2) .Wert = Sheets ("Schüler"). Zellen (2, 2) .Wert Dann Sonst: Spalten ("E"). Sonderzellen (xlCellTypeBlanks) .EntireRow.Delete Ende Wenn Nächste i End Sub'code' Wäre es möglich, die Ausgabe von Tagen zu begrenzen, sagen wir fünf von jedem Tag? – SamC

+0

Paar Dinge ... 1) Wenn Sie Set-Bereiche, z. B1: G700, du brauchst kein LR. LR wird verwendet, um die letzte Zeile dynamisch zu definieren. 2) Wenn Sie nur 5 Ausgaben für eine bestimmte Variable haben möchten, müssen Sie nach 5 zurückgehen und Zeilen entweder loopen und entfernen oder mit .FIND arbeiten. Sie können die .FIND Info nachschlagen, da es dort eine Menge gibt. Froh, dass das für dich geklappt hat! – Cyril

0

In einer nicht verwendeten Zelle im Zeitplan Arbeitsblatt, setzen Sie diese Formel,

=IFERROR(INDEX(Pupils!A:A, AGGREGATE(15, 6, ROW(A$1:A$99)/(Pupils!B$1:B$99=Days!$C$2), ROW(1:1))), TEXT(,)) 

Füllen Sie unten. Passen Sie den Anteil $99 an, wenn Schüler im Schülerarbeitsblatt unter Zeile 99 aufgeführt sind.

0

Wünschte, ich eine Datei anhängen könnte. Ich nahm an Jeepeds Vorschlag teil.

In Fahrplan richte ich 7 Spalten: So, Mo, Di, Mi, Do, Fr, Sa

In Fahrplan Zelle A2: = IF (Schüler B $ $ 2:! B $ 99 $ = Tage $ A $ 1, Schüler $ A2, "")

In Fahrplan Zelle B2: = WENN (Schüler B $ $ 2: B $ 99 $ = Tage 2 $ A $, Schüler $ A2! "!")

... für alle 7 Spalten fortfahren, notieren Sie die Änderung der Days-Zellreferenz

... dann ziehen Sie alle 7 Spalten für so viele Reihen herunter, wie Pupillen vorhanden sind

In Fahrplan Zelle A3: = IF (Schüler B $ $ 2: B $ 99 $ = Tage 1 $ A $, Schüler $ A3 ""!)

In A4 Fahrplan Zelle: = WENN (Schüler $ B $ 2:! B $ 99 $ = Tage $ A $ 1, $ Schüler A4, "")

...

Hoffnung das ist, was Sie für einen 'Fahrplan' wollte.

Verwandte Themen