Suchen des breitesten Zelleninhalts (Microsoft Excel)
Mary hat mehrere Tabellen mit jeweils zwischen 10.000 und 80.000 Zeilen.
Gelegentlich ist eine Spalte breiter als sie sein sollte, wahrscheinlich aufgrund des Inhalts, der sie breit macht. Mary fragt sich also, ob es eine einfache Möglichkeit gibt, die breiteste Zelle zu finden, ohne durch 10.000 bis 80.000 Zeilen zu scrollen, um sie zu finden.
Es gibt verschiedene Möglichkeiten, dies zu tun, aber für die Zwecke dieses Tipps werde ich nur drei davon beschreiben. Der erste ist ein einfacher Weg, wenn Sie eine Hilfsspalte in Ihrem Arbeitsblatt verwenden können. Angenommen, die Spalte, die Sie überprüfen möchten, ist A. Sie können diese Formel in die erste Zelle einer nicht verwendeten Spalte einfügen:
=LEN(TRIM(A1))
Kopieren Sie die Formel so viele Zellen wie nötig nach unten und verwenden Sie dann die Filterfunktionen von Excel, um die größten Werte in dieser Spalte anzuzeigen. Dies gibt Ihnen die Zellen, die Sie wünschen.
Die zweite formelbasierte Methode besteht darin, eine Formel wie diese zu verwenden:
=MIN(IF(LEN($A:$A)=MAX(LEN($A:$A)),ROW($A:$A),1048577)) =CELL("address",INDEX($A:$A,MATCH(MAX(LEN($A:$A)),LEN($A:$A),0)))
Beide sollten als Array-Formeln eingegeben werden, indem Sie Strg + Umschalt + Eingabetaste drücken. Die erste Formel gibt die Zeilennummer der Zelle in Spalte A mit der längsten Länge zurück. Die zweite Formel gibt die tatsächliche Adresse der Zelle mit der längsten Länge zurück.
Der dritte Ansatz ist gut, wenn Sie die langen Längen ziemlich regelmäßig herausfinden müssen. Es beinhaltet die Verwendung eines Makros, um die erforderlichen Informationen abzuleiten:
Sub FindWidestCells() Dim Ad(10) As String Dim Le(10) As Integer Dim J As Integer Dim K As Integer Dim L As Integer Dim lCols As Long Dim lRows As Long Dim Rng As Range Dim c As Range Dim sTemp As String lCols = ActiveCell.Column lRows = Cells(Rows.Count, lCols).End(xlUp).Row Set Rng = Range(Cells(1, lCols), Cells(lRows, lCols)) For Each c In Rng ' Find shortest length in the group K = 1 For J = 2 To 10 If Le(J) < Le(K) Then K = J Next J If Len(c.Text) > Le(K) Then Le(K) = Len(c.Text) Ad(K) = c.Address End If Next c ' Sort the cells For J = 1 To 9 L = J For K = J + 1 To 10 If Le(K) > Le(L) Then L = K Next K If L <> J Then sTemp = Ad(L) Ad(L) = Ad(J) Ad(J) = sTemp K = Le(L) Le(L) = Le(J) Le(J) = K End If Next J sTemp = "Longest cells:" & vbCr For J = 1 To 10 If Le(J) > 0 Then sTemp = sTemp & " " & Ad(J) & " (" & Le(J) & ")" & vbCr End If Next J MsgBox sTemp End Sub
Sie müssen lediglich eine Zelle in der Spalte auswählen, die Sie überprüfen möchten, und dann das Makro ausführen. Was zurückgegeben wird, ist eine Liste der 10 breitesten Zellen in der Spalte in absteigender Reihenfolge basierend auf der Länge.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (13747) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365.