返回列表 上一主題 發帖

[發問] 儲存格字串長度大於255

回復 4# a77261988
  1. Option Explicit
  2. Sub Ex()
  3. Dim W As Variant, xi As Integer
  4.     W = "1aaaaaaaa-aaaaa-aaa-2aa-aa-a-3a-aaaaa-aaa-4aa-aa-a-a-aaaaa- aaa - aa - aa - a - a - aaaaa - aaa - aa - aa - a - a - aaaaa - aaa - aa - aa - a - a - aaaaa- aaa - aa - aa - a - a - aaaaa - aaa - aa - aa - a - a - aaaaa - aaa - aa - aa-a-a-aaaaa- aa -aa - aa - a - a - aaaaa - aaa - aa - aa - a - a - aaaaa - aaa - aa - aa - a - a - aaaaa - aaa - aa - aa - a - a"
  5.     W = Replace(W, "-", "-,")
  6.     W = Split(W, ",")
  7.     For xi = 2 To UBound(W) Step 3
  8.         W(xi) = W(xi) & Chr(10)
  9.     Next
  10.     [a1] = Join(W, Chr(10))
  11. End Sub
複製代碼

TOP

這樣整理不是顯得更亂?
  1. Sub yy()
  2.     For r = 1 To [d1000].End(3).Row
  3.         w = Cells(r, 4).Value
  4.         For i = 1 To Len(w)
  5.             If Mid(w, i, 1) = "-" Then
  6.                 j = j + 1
  7.                 If j = 3 Then
  8.                     Mid(w, i, 1) = ",": j = 0
  9.                 End If
  10.             End If
  11.         Next
  12.         Cells(r, 4) = Trim(Replace(w, ",", "-" & vbLf))
  13.     Next
  14. End Sub
複製代碼

TOP

oobird大哥,因為原本的資料更多更長,
需要透過由幾個符號換行來檢視資料,所以有這個需求,
程式完全達到我的需求,非常的感謝你,
但是有一個疑問就是,當資料整理完之後,
將儲存格拉開,前面會有很多空白處,這是什麼原因呢?

TOP

不會有空白的,全選~把格式~對齊方式選"靠上對齊",前面就不會空了!
程式碼套用GBKEE版主的代碼效率會更高:
  1. Sub yy()
  2.     For r = 1 To [d1000].End(3).Row
  3.         W = Cells(r, 4).Value
  4.         W = Replace(W, "-", "-,")
  5.         W = Split(W, ",")
  6.         For xi = 2 To UBound(W) Step 3
  7.             W(xi) = W(xi) & Chr(10)
  8.         Next
  9.         Cells(r, 4) = Trim(Join(W))
  10.     Next
  11. End Sub
複製代碼

TOP

oobird大哥,再請問一下,有辦法將固定的[d1000]變成滑鼠點選的整列column嗎?

TOP

回復 15# a77261988
  1. Sub nn()
  2. Dim A As Range, i%, s%
  3. If Application.CountA(Selection.EntireColumn) = 0 Then Exit Sub '避免欄位無資料
  4. For Each A In Selection.EntireColumn.SpecialCells(xlCellTypeConstants)
  5. i = 0: s = 0: A = Application.WorksheetFunction.Substitute(A, Chr(10), "") '取消換行符號
  6. Do Until InStr(Mid(A, i + 1), "-") = 0
  7.   i = InStr(i + 1, A, "-")
  8.   s = s + 1
  9.   If s Mod 3 = 0 Then A = Application.WorksheetFunction.Replace(A, i, 1, "-" & Chr(10))
  10. Loop
  11. Next
  12. Selection.EntireColumn.AutoFit
  13. End Sub
複製代碼
學海無涯_不恥下問

TOP

謝謝各位大哥!

TOP

        靜思自在 : 待人退一步,愛人寬一寸,就會活得很快樂。
返回列表 上一主題