Google 스프레드 시트가 모든 사람을위한 것은 아니라는 생각과 마찬가지로이 매크로는 모든 사람을위한 것이 아니라 누군가를위한 것일 수도 있습니다 .
선택한 범위를 통과하고 넘친 셀을 잘린 텍스트로 바꿉니다.
플래그는 다음을 결정합니다.
문제가되는 텍스트는 새 워크 시트에서 같은 상대 주소로 복사되거나 삭제됩니다.
잘린 텍스트는 하드 코딩되거나 워크 시트 수식을 통해 연결됩니다 =LEFT()
잘린 텍스트는 새 시트의 전체 문자열로 하이퍼 링크됩니다.
기본값은 데이터를 유지하고 두 링크를 모두 사용하는 것입니다.
Option Explicit
Sub LinkTruncatedCells()
Dim rng As Range: Set rng = Selection
Dim preserveValues As Boolean: preserveValues = True
Dim linkAsFormula As Boolean: linkAsFormula = True
Dim linkAsHyperlink As Boolean: linkAsHyperlink = True
Dim w As Single
Dim c As Range
Dim r As Range
Dim t As Long
Dim l As Long
Dim s As String
Dim ws As Worksheet
Dim ns As Worksheet
Application.ScreenUpdating = False
Set ws = rng.Parent
For Each c In rng.Columns
w = c.ColumnWidth
t = 0
l = 0
For Each r In c.Rows
If Len(r) > l Then
s = r
If CBool(l) Then r = Left(s, l)
Do
r.Columns.AutoFit
If r.ColumnWidth > w And Len(s) > t Then
t = t + 1
r = Left(s, Len(s) - t)
l = Len(r)
End If
Loop Until t = Len(s) Or r.ColumnWidth <= w
r.ColumnWidth = w
If r <> s And preserveValues Then
If ns Is Nothing Then
Set ns = ws.Parent.Worksheets.Add(after:=ws)
End If
ns.Range(r.Address) = s
If linkAsFormula Then r.Formula = "=LEFT(" & ns.Name & "!" & r.Address & "," & l & ")"
If linkAsHyperlink Then ws.Hyperlinks.Add Anchor:=r, Address:="", SubAddress:= _
ns.Range(r.Address).Address(external:=True)
End If
End If
Next r
Next c
ws.Activate
Application.ScreenUpdating = True
End Sub
마지막 참고 사항 : 개인 프로젝트에 사용했으며 신뢰할 수 있음을 알았지 만 익숙하지 않은 매크로를 시도하기 전에 작업을 저장하고 백업하십시오 .