Нахождение самого широкого содержимого ячеек (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), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (13747) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.