정규 표현식 또는 정규식이 내가 생각하는 바입니다.
([A-Z0-9]*)!(\${0,1})([A-Z]{1,3})(\${0,1})([0-9]*)
는 "Sheet1에! A1"같은 것을 일치합니다 다음 패턴 "Sheet1에! $ A $ 1", "Sheet1에! $ A1", "Sheet1의! A $ 1"
설명 :
([A-Z0-9]*)! = Find anything that is before "!"
(\${0,1}) = $ or nothing
([A-Z]{1,3}) = between one and three letters
([0-9]*) = Any number
원하는 패턴 만 수정하면 쉽게 수정할 수 있습니다. 특히 ([A-Z0-9] *)! (\ $ {0,1}) B (\ $ {0,1}) 1은 B ($) 1과 일치합니다 ... 문자열 조작을 사용하여 Regexp 패턴을 구성하고 올바르게 입력해야합니다.
당신이 당신에게 당신의 목표를 달성하기 위해 모든 도구를 제공해야합니다 (도구> 참조)
다음 코드를보십시오 "5.5은 마이크로 소프트 VBScript 정규 표현식"참조해야합니다
Sub ReplaceReference()
' Reference: Microsoft VBScript Regular Expressions 5.5
Dim RegEx As Object
Set RegEx = New RegExp
Dim s As String
' Here I have hardcoded the reference to the original cell for demonstration purposes
s = "Sheet1!$AB$2"
' Replacement: New sheetname, New Column, new row number
Dim NewCol As String, NewRow As String
NewCol = "C"
NewRow = "10"
Dim NewSheet As String
NewSheet = "Sheet2"
With RegEx
.Pattern = "([A-Z0-9]*)!(\${0,1})([A-Z]{1,3})(\${0,1})([1-9]*)"
.IgnoreCase = True
.Global = True
End With
Debug.Print RegEx.Replace(s, NewSheet & "!" & "$2" & NewCol & "$4" & NewRow)
End Sub
건배 줄리앙
대체 할 필요가있는 참조/주소의 네 가지 변형 (상대/고정 행/고정 행/고정 행 + 열)이있는 것처럼 보이므로 모든 루프를 반복하고 찾을 수 있으면 바꿀 수 있습니다 (조정 그에 따라 대체 주소) –
그래, 나는 다른 어떤 방법도 볼 수 없다. 그것은 조금 clunky 인 것처럼 수치 스럽다. 당신의 도움을 주셔서 감사합니다! –
나는 그것들이 유일한 변종은 아니라고 생각합니다 - 그것도 명명 된 범위를 포함하지 않을까요? 아니면 별도의 참조로 간주됩니까? –