查找最广泛的单元格内容(Microsoft Excel)
玛丽有几个电子表格,每个电子表格之间有10,000-80,000行。
有时,列的宽度应大于其应有的宽度,这可能是由于内容使其变宽了。因此,玛丽想知道是否有一种简单的方法来找到最宽的单元格,而无需滚动10,000-80,000行来查找它。
有几种方法可以解决此问题,但出于本技巧的目的,我将仅描述其中三种。如果可以利用工作表中的帮助器列,第一种方法很简单。假设您要检查的列为A。您可以将此公式放在未使用的列的第一个单元格中:
=LEN(TRIM(A1))
将公式复制到所需的尽可能多的单元格,然后使用Excel的筛选功能显示该列中的最大值。这将为您提供所需的细胞。
第二种基于公式的方式是使用类似于以下的公式:
=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)))
通过按Ctrl + Shift + Enter,这两个都应作为数组公式输入。第一个公式将返回列A中具有最长长度的单元格的行号。第二个公式返回长度最长的单元的实际地址。
如果您需要定期找出较长的长度,则第三种方法很好。它涉及使用宏来导出必要的信息:
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
您需要做的就是在要检查的列中选择一个单元格,然后运行宏。返回的是列中10个最宽单元格的列表,根据长度从大到小排列。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本提示(13747)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。