Mary có một số bảng tính với 10.000-80.000 hàng mỗi bảng.

Đôi khi một cột rộng hơn mức bình thường, có thể là do nội dung làm cho cột đó rộng. Vì vậy, Mary tự hỏi liệu có cách nào dễ dàng để tìm ô rộng nhất mà không cần cuộn qua 10.000-80.000 hàng để tìm ô đó hay không.

Có một số cách để giải quyết vấn đề này, nhưng với mục đích của mẹo này, tôi sẽ chỉ mô tả ba trong số chúng. Cách đầu tiên là một cách dễ dàng nếu bạn có thể sử dụng cột trợ giúp trong trang tính của mình. Giả sử cột bạn muốn kiểm tra là A. Bạn có thể đặt công thức này vào ô đầu tiên của cột không sử dụng:

=LEN(TRIM(A1))

Sao chép công thức xuống nhiều ô nếu cần, sau đó sử dụng khả năng lọc của Excel để hiển thị các giá trị lớn nhất trong cột đó. Điều này sẽ cung cấp cho bạn những tế bào mà bạn mong muốn.

Cách dựa trên công thức thứ hai là sử dụng công thức như sau:

=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)))

Cả hai điều này phải được nhập dưới dạng công thức mảng bằng cách nhấn Ctrl + Shift + Enter. Công thức đầu tiên sẽ trả về số hàng của ô trong cột A có độ dài dài nhất. Công thức thứ hai trả về địa chỉ thực của ô có độ dài dài nhất.

Cách tiếp cận thứ ba là tốt nếu bạn cần phải tìm ra độ dài khá thường xuyên. Nó liên quan đến việc sử dụng macro để lấy thông tin cần thiết:

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

Tất cả những gì bạn cần làm là chọn một ô trong cột bạn muốn kiểm tra và sau đó chạy macro. Những gì được trả về là danh sách 10 ô rộng nhất trong cột, theo thứ tự giảm dần dựa trên độ dài.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (13747) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365.