У Мэри есть несколько таблиц, каждая из которых содержит от 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), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (13747) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.