मैं चयनित कक्षों में कई मानों को कैसे ढूँढ और बदल सकता हूँ?


1

मैं 2 कॉलम से मान के साथ एक्सेल में एक सीमा के भीतर कई मानों को ढूंढना और प्रतिस्थापित करना चाहता हूं: मूल स्ट्रिंग के साथ ए; बी प्रतिस्थापन स्ट्रिंग के साथ। मुझे पहले से ही एक मैक्रो मिला है जो कुछ हद तक काम कर रहा है (धन्यवाद निक्सदा), लेकिन मूल स्ट्रिंग में कुछ लंबे मानों के बीच में डैश को नहीं संभाल सकता।

आदर्श रूप से मैं इसे केवल मेरे द्वारा चुनी गई सीमा पर चलाने में सक्षम होना चाहूंगा। अगर मैं लुकअप रेंज भी चुन सकता हूं तो एक अतिरिक्त बोनस होगा।

नीचे मूल और प्रतिस्थापन मूल्य स्तंभों का नमूना मूल्य है:

मूल मान स्तंभ:

T1-D7-F2-F3-    
T1-D7-F2-F3-C33    
U4 U5 Q2 Q4    
U3-Q7.U1    
R42-43-22-23-

प्रतिस्थापन मान कॉलम:

T1,D7,F2,F3    
T1,D7,F2,F3,C33    
U4,U5,Q2,Q4    
U3,Q7,U1    
R42,R43,R22,R23

गैरी के छात्र के उत्तर के जवाब में अपडेट करें

"डेटा" टैब में मान, कॉलम A:

1000PF CAP
4 SCREWS
D21 D22 - 709
D4-U3-RV3-Q2-U3
D7 - 00004224
D7 - 0004224
D7 - 004224
D7-F2-C33-F3-U6
D7-F3-J1
END PLATE
END PLATES
F2 F3 - 219
F2-F3-T1
Q11-Q3-J2-J9-
Q2 Q10 U12
Q2 Q3 Q10 Q11
Q2 Q3 Q11 Q10
Q2- Q4- U4- U5
Q2-Q5-Q8-Q10
Q3-Q11.R95
Q5-C10-C35
Q5-C19

"टैब" टैब, कॉलम ए में मान ऊपर के समान होंगे

"टैब" टैब, कॉलम B (प्रतिस्थापन मान) में मान:

1000PF_CAP
4SCREWS
D21,D22,000709
D4,U3,RV3,Q2,U3
D7,004224
D7,004224
D7,004224
D7,F2,C33,F3,U6
D7,F3,J1
END_PLATE(S)
END_PLATE(S)
F2,F3,000219
F2,F3,T1
Q11,Q3,J2,J9
Q2,Q10,U12
Q2,Q3,Q10,Q11
Q2,Q3,Q11,Q10
Q2,Q4,U4,U5
Q2-Q5-Q8-Q10
Q3,Q11,R95
Q5,C10,C35
Q5,C19

मैक्रो चलाने के बाद, मुझे उम्मीद है कि इसके बजाय, मुझे निम्नलिखित परिणाम मिले:

1000PF_CAP CAP
4SCREW(S)S
D21,D22 - 709
D4,U3,RV3-Q2-U3
D700004224
D70004224
D7004224
D7,F2-C33-F3-U6
D7,F3-J1
END_PLATE(S)
END_PLATE(S)S
F2,F3 - 219
F2,F3-T1
Q11-Q3-J2,J9-
Q2,Q10 U12
Q2 Q3 Q10,Q11
Q2,Q3,Q11 Q10
Q2,Q4- U4,U5
Q2-Q5Q8-Q10
Q3,Q11.R95
Q5C10,C35
Q5C19

कोई विचार?


संपादित करें

मूल्यों को बदलने के लिए इस मैक्रो को चलाने के बाद , मुझे निम्नलिखित मानों से परेशानी है:

नीचे बाएं कॉलम = लुकअप कॉलम A और B में समान मान हैं (जिन्हें बदलना नहीं चाहिए, R 3 को छोड़कर R3 बनना चाहिए)।

दायां स्तंभ नीचे = मैक्रो चलाने के बाद परिणाम।

Q?  Q?
Q1  Q?
Q2  Q?
Q3  Q?
Q4  Q?
Q5  Q?
Q6  Q?
Q7  Q?
Q8  Q?
Q9  Q?
QR? QR?
R 3 R?
R?  R?
R0  R?
R1  R?
R2  R?
R3  R?
R4  R?
R5  R?
R6  R?
R7  R?
R8  R?
R9  R?
RE  R?
RV  R?

तो आप तीन अक्षर {<space> -} को सभी अल्पविराम में बदल सकते हैं ??
गैरी के छात्र

खैर, बिल्कुल नहीं। उदाहरण के लिए, मूल मान अक्षर R को याद कर सकते हैं (ऊपर उदाहरण की अंतिम पंक्ति देखें), और उन्हें प्रतिस्थापन मानों में सही (अक्षर R शामिल) किया गया है।
डैनियल

प्रतिस्थापन मूल्य मूल मूल्य से पूरी तरह से अलग हो सकता है। स्प्रैडशीट में मूल मूल्य मिलने पर हर बार, "लुकआउट" टैब से इसके प्रतिस्थापन मूल्य के साथ प्रतिस्थापित किया जाना चाहिए।
डैनियल

@ डैनियल कृपया मेरे निर्धारित कोड का परीक्षण करें । मैंने xlPart और xlWhole के साथ एक छोटी सी गलती की
nixda

@ निक्सदा मैंने इसका परीक्षण किया और इसका कोई प्रतिस्थापन नहीं हुआ? क्या मुझसे कुछ ग़लत हो रहा है? मेरे टैब को "डेटा" और "लुकअप" नाम दिया गया है।
डैनियल

जवाबों:


1

यहाँ एक छोटा सा नमूना मैक्रो है। अनुवाद तालिका "टैब" नामक एक टैब में है और संपादित किया जाने वाला डेटा "डेटा" नामक टैब में है:

Sub ChangeValues()
    Dim N As Long, L As Long
    Dim rLook As Range
    Sheets("tabl").Select
    N = Cells(Rows.Count, "A").End(xlUp).Row
    aryA = Range("A1:A" & N)
    aryB = Range("B1:B" & N)
    Sheets("data").Select
    Set rLook = Application.InputBox(Prompt:="Select replacement range", Type:=8)
    For L = 1 To N
        rLook.Replace aryA(L, 1), aryB(L, 1)
    Next L
End Sub

मैक्रो के लिए धन्यवाद! यह वही करता है जो मैक्रो के पास था जो मैं कर रहा था - कुछ मूल्यों को ठीक किया गया था, कुछ - नहीं। मैं एक नमूना स्प्रेडशीट कैसे संलग्न कर सकता हूं, यह दिखाने के लिए कि मेरा क्या मतलब है?
डैनियल

इस फोरम में संभव नहीं है
गैरीज़ स्टूडेंट

क्या मैं ई-मेल द्वारा नमूना स्प्रेडशीट भेज सकता हूं?
डैनियल

@ डैनियल इसे ge.tt पर अपलोड करें और अपने प्रश्न में लिंक संपादित करें । आपने मेरा उल्लेख किया, क्या आप मुझे मूल प्रश्न से जोड़ सकते हैं? शायद मैं उस कोड को ठीक कर सकता हूं
nixda

@ निक्सडा मैंने यहां एक ऐसी ही समस्या के लिए आपका समाधान देखा: superuser.com/questions/620484/…
डैनियल

0

यदि आप RegEx Find / Replace addon को स्थापित करते हैं , तो आप इसे पूरा करने के लिए निम्न नियमित अभिव्यक्तियों का उपयोग कर सकते हैं, और मैंने इसका परीक्षण किया है। यह काम करता हैं।

Find:           \s*[-.]\s*
Replacement:    ,
Find:           \s+(?!$)
Replacement:    _

मैंने अभी देखा कि आपके पास लाइनों में से एक के अंत में एक डैश है, और यह अंधाधुंध रूप से अच्छी तरह से समाप्त हो गया है। आप एक और RegEx खोज / प्रतिस्थापित करना चाहते हैं। खोजें ,$और कुछ भी नहीं के साथ बदलें। कि जैसे किसी भी झूलने वाले अल्पविराम से छुटकारा मिल जाएगा।
सुपरचेता

बहुत बहुत धन्यवाद, होनहार लग रहा है! यह एक कोशिश ASAP दे देंगे। जिस मैक्रो ने निक्सदा प्रदान किया वह पूरी तरह से काम करता है, मुझे सिर्फ एक प्रकार की प्रविष्टियां मिलीं जिन्हें सही ढंग से प्रतिस्थापित नहीं किया जा सकता है। अगर मेरे पास "क्यू?" लुकअप रेंज में, सभी "Q1" से "Q9" मान "Q!" द्वारा प्रतिस्थापित हो जाते हैं। Q11, Q12, आदि में वह समस्या नहीं है। "आर?" के साथ भी। आशा है कि RegEx की देखभाल करने में सक्षम होगा।
डेनियल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.