निम्न मॉड्यूल एक सीमा लेता है और संदर्भित कोशिकाओं में पाए गए मानों के साथ सेल संदर्भों को बदलता है। का उपयोग करता है Range.Precedents
एक स्ट्रिंग को संदर्भित सेल पते पाने के लिए और Split
यह सेल पते की एक सरणी के लिए बदलने के लिए। इस सरणी का उपयोग लक्ष्य सेल के सूत्र में मिलान पाठ को खोजने और बदलने के लिए किया जाता है।
प्रयोग
- विजुअल बेसिक एडिटर में पूरे कोड को एक मानक कोड मॉड्यूल में कॉपी करें।
- के साथ सबरूटिन को बुलाओ
Call ReplaceReferencesWithValues(yourRange)
।
Test
मैक्रो उपनेमका चयनित श्रेणी में संदर्भ को बदलने के लिए कहता है।
कोड
Option Explicit
Sub Test()
Call ReplaceReferencesWithValues(Selection)
End Sub
Sub ReplaceReferencesWithValues(rng As Range)
Dim cl As Range
Dim ws As Worksheet
Dim strTemp As String
Dim strRef() As String
Dim intIndex As Integer
For Each cl In rng
Set ws = cl.Worksheet
strTemp = cl.Formula
strRef() = ReferenceArray(cl)
For intIndex = LBound(strRef) To UBound(strRef)
strTemp = Replace(strTemp, strRef(intIndex), _
ws.Range(strRef(intIndex)).Value)
Next
cl.Formula = strTemp
Next
End Sub
Function ReferenceArray(rngSource As Range) As Variant
Dim rngRef As Range
Dim strTemp As String
On Error Resume Next
For Each rngRef In rngSource.Precedents.Cells
strTemp = strTemp & ", " & rngRef.Address(False, False)
Next
If Len(strTemp) > 0 Then strTemp = Mid(strTemp, 3)
ReferenceArray = Split(strTemp, ", ")
End Function
चिंताओं
- प्रतिस्थापन ऐसा होता है
String
और जैसे कि, यदि सूत्र में सेल "A1" और "A1" सहित अन्य पाठ का संदर्भ होगा, तो मिलान पाठ भी सेल "A1" के मान से प्रतिस्थापित किया जाएगा ।
- फ़ार्मुलों को फ़ंक्शन करने के लिए एक सीमा की आवश्यकता होती है, जैसे कि
SUM
, यदि आप सेल मानों के साथ संदर्भों को बदलने का प्रयास करते हैं, तो यह टूट जाएगा।