2014-05-15 111 views
5

我有一個Excel電子表格,我正在寫出一個文件。我目前使用下面的方法來再現各單元格的內容:如何獲得列(Excel)中最長字符串的長度?

cell_contents = Right(Space(10) & Trim(Cells(iRow, iColumn)), 10) 

但是,如果單元格的內容是超過10個字符長(或然而長我選擇指定),則我鬆散部件的數據。有沒有一種方法可以快速輕鬆地獲取一系列單元格中最長字符串的長度?

我看到有人建議使用下面的循環,但我希望,我也許能做到這一點,而不必遍歷所有單元格:

For Each c In SourceRange.Cells 
    if len(c) > b then b = len(c) 
Next c 
+0

在新列中使用= Len()公式,按長度對單元格進行排序,並通過它們獲取第一個單元格或循環並比較長度。 – Ripster

+0

@Ripster我真的需要避免在表格中輸入更多內容,並將所有內容都保存在VBA中。 – tlewis3348

回答

7

記錄這些步驟在宏你想要計算最大長度的單元格。

1)輸入此公式

=MAX(LEN(A1:A4), 1) -- Edit for your range. 

2)press control-shift enter(FormulaArray)

3)現在停止錄製宏

4)查看VBA。將您需要的內容複製到您的VBA中。

應該給你這樣的事情:

Selection.FormulaArray = "=MAX(LEN(R[-10]C[1]:R[-1]C[1]))" 
+0

我應該考慮使用宏記錄器來記錄輸入數組公式。這應該很好地工作!謝謝! – tlewis3348

+1

當你需要VBA的時候,你可以通過公式或者一系列步驟來完成,我總是使用宏記錄器。我通常以這種方式更多地瞭解現有的VBA功能;它節省了我的研究時間。 – xQbert

+0

我知道這一點,之前也做過這個。我不知道爲什麼我在這種情況下沒有想到它。你知道是否可以從VBA中的數組公式中計算結果,而不必將其輸入到工作表上的單元格中? ['Application.Evaluate']的文檔(http://office.microsoft.com/en-us/excel-help/HV080550418。aspx)解釋瞭如何評估VBA中的Excel表達式,但這不適用於數組公式。 – tlewis3348

4

出版社Alt-F11,插入新的模塊,粘貼代碼波紋管。

Public Function maxRangeLength(data As Range) As Integer 
    Dim ret As Integer 

    ret = 0 

    For Each cell In data 
     ret = Application.Max(ret, Len(cell)) 
    Next cell 

    maxRangeLength = ret 
End Function 

用法:

=maxRangeLength(A8:D11) 
+0

這對我來說很好。謝謝! – David

-1

假設數據是在A列,並有您的電子表格標題行。

  1. 創建新列旁邊和式中輸入:= LEN(A2)
  2. 向下自動填充該公式。
  3. 打開該列的過濾並單擊列標題單元格上的下拉框。
  4. 向下滾動到最大彙總值列表的底部。
    這將是該列中的最大值。
+0

這不回答我的問題。我正在尋找VBA解決方案,而不是表單上的公式。 – tlewis3348

相關問題