Suchen Sie die zuletzt verwendete Zeile in Excel mit C # [duplizieren]

7

Ich versuche, die zuletzt verwendete Zeile in einem Excel-Arbeitsblatt zu finden. Dafür benutze ich diesen Code:

%Vor%

Die meiste Zeit funktioniert es gut, aber manchmal denkt Excel, dass es mehr Zeilen im Blatt gibt, als es sein sollte.

Fx: Wenn ich Daten von Blatt 1 mit 12 Zeilen in ein leeres Blatt2 kopiere, dann alle Daten in Blatt2 lösche, indem ich mit der rechten Maustaste klicke und "Löschen ..." drücke und Daten von Blatt3 mit 5 Zeilen kopiere sheet2, dann lastUsedRow gibt mir den Wert 12, der 5 hätte sein sollen.

Das obige Bildbeispiel soll meinen Wert 22 als Zeilenanzahl angeben, stattdessen werde ich 634 erhalten. Beachten Sie die Bildlaufleiste auf der rechten Seite.

Excel scheint einige Zellen gefüllt zu haben, obwohl ich gerade alle Zellen gelöscht habe, bevor ich neue Daten mit weniger Zeilen in das Blatt kopiere.

Gibt es eine Möglichkeit, die Ansicht der Daten im Blatt zu "skalieren", so dass ich die richtige Anzahl an verwendeten Zellen oder eine andere Möglichkeit finde, die Nummer der zuletzt verwendeten Zeile zu finden?

Danke.

    
Harving 05.09.2012, 07:43
quelle

3 Antworten

4

Hier ist der Code, den ich verwende:

%Vor%

Hinweis: Sie könnten versucht sein, alle Einzelzellenwertprüfungen durch CountA zu ersetzen, was jedoch in bestimmten Fällen fehlschlägt. Wenn eine Zelle beispielsweise die Formel =IF(A1=55,"Y","") enthält, zählt eine resultierende leere Zeichenfolge als nicht leere Zelle mit CountA .

    
CtrlDot 05.09.2012, 10:41
quelle
11

Bearbeiten: Neue Lösung

Da Joe den richtigen Code bereitgestellt hat, um die letzte verwendete Zeile zu erhalten.

%Vor%

Und verwenden Sie den folgenden Befehl, um Inhalt und Formatierungen zu löschen

%Vor%

Das sollte funktionieren;)

    
lorenz albert 05.09.2012 08:36
quelle
5

Um die letzte verwendete Zeile in einem Arbeitsblatt zu erhalten, können Sie verwenden:

%Vor%

Beachten Sie Folgendes:

  • UsedRange startet nicht unbedingt in der ersten Zeile - die erste Zeile ist möglicherweise leer.

  • UsedRange enthält Zellen, die Formatierung enthalten, selbst wenn ihr Inhalt leer ist. Ich vermute, das ist der Grund, warum Sie Werte sehen, die größer sind als Sie erwarten. Sie müssen Formatierung sowie Daten aus den leeren Zellen löschen.

  

Ich bin mir nicht sicher, wie die Formatierung von Zellen programmgesteuert zu löschen ist

Sie können Range.ClearFormats verwenden, um die Formatierung zu löschen, oder Range.Clear , um alles zu löschen. Wenn Sie nicht sicher sind, was Sie in Excel programmatisch machen sollen, sollten Sie im Allgemeinen ein Makro aufzeichnen, indem Sie es manuell ausführen und dann das generierte Makro überprüfen.

    
Joe 05.09.2012 09:09
quelle

Tags und Links