/ / एक्सेल में शीट के पार छँटाई - एक्सेल, सॉर्टिंग, वीबीए, एक्सेल-वीबीए, डायनेमिक-लिंकिंग

एक्सेल में चादरें छांटना - एक्सेल, सॉर्टिंग, वीबीए, एक्सेल-वीबीए, डायनेमिक-लिंकिंग

मैं नहीं जानता कि यह संभव है या नहीं।

मेरे पास एक कार्यपुस्तिका है जिसमें दो शीट हैं, "इनपुट" और "आउटपुट"

user1 "इनपुट शीट" में भरता है

स्तंभ A = नाम
स्तंभ B = आयु
स्तंभ C = स्थान
कॉलम D = हाइट
..
..

फिर "आउटपुट" शीट पर कॉलम A को "इनपुट" शीट पर कॉलम A से मान कॉपी करने के लिए सेट किया गया है और उपयोगकर्ता 2 उन मानों का उपयोग करके अधिक विवरण भरता है जो user1 ने दर्ज किए हैं

स्तंभ B = आँख का रंग
स्तंभ C = बालों का रंग
कॉलम D = उंगलियों की संख्या
..
..

इसलिए मुझे उम्मीद है कि आपको यह विचार मिल जाएगा, User1 कुछ में प्रवेश करता हैविवरण, और फिर उपयोगकर्ता 2 उस के साथ कुछ काम करता है और "आउटपुट शीट" में अधिक विवरण दर्ज करता है। स्तंभ ए के साथ "इंडेक्स" मान है जो दोनों को एक साथ जोड़ता है।

मेरा मुद्दा यह है कि अगर User2 विवरण में प्रवेश करता है,और फिर "इनपुट" शीट पर वापस जाता है और एक सॉर्ट करता है, "आउटपुट" शीट में मान अब मेल नहीं खाएंगे, जबकि कॉलम ए में बदलाव को प्रतिबिंबित करने के लिए बदलाव होंगे, बाकी सभी समान रहेंगे।

क्या चादरों के बीच की पंक्तियों को जोड़ना, या एक ऐसा कोड बनाना संभव है जो दोनों चादरों के बीच चलेगा और उन्हें सम्‍मिलित रखेगा।

इसके लिए उपयोगकर्ता को कोशिश करने वाले ऐड-हॉक खोजों के लिए काम नहीं करना पड़ता है, मैं सिर्फ "इनपुट" शीट पर एक बटन लगाना चाहता हूं, उदाहरण के लिए "नाम से छाँटना", "स्थान के आधार पर छाँटना" आदि।

सादर

हारून

उत्तर:

उत्तर № 1 के लिए 1

यदि आप पहले से सेट किए गए प्रकारों के साथ ठीक हैं, तो एकसमाधान शीट ए और शीट बी से शीट सी तक दोनों मानों को प्रतिबिंबित करने के लिए है, और फिर बस इसे क्रमबद्ध करें, और शीट ए और बी में नए, सॉर्ट किए गए परिणामों के साथ पुन: पॉप्युलेट करें।

अर्थात।

Sheet1                   | Sheet 2                           | Sheet 3 (Hidden and named)
|                                   |
Name     Age    etc,     | Eye Colour    Hair colour   etc.  | =Sheet1!A1 ... =Sheet2!A1

फिर आपका सॉर्ट बटन एक उप कुछ कहेगा:

Dim rngSortRange As Range, rngStartCell As Range, rngEndCell As Range
Set rngStartCell = Worksheets("Sheet_3_Name_Goes_Here").Range("A1")
Set rngEndCell = Worksheets("Sheet_3_Name_Goes_Here").Range( _
rngStartCell.End(xlToRight).Column, _
rngStartCell.End(xlDown).Row)
Set rngSortRange = Worksheets("Sheet_3_Name_Goes_Here").Range(rngStartCell, rngEndCell)
rngSortRange.Sort Key1:=<Column Number Here>, Order1:=xlAscending, Header:=xlYes
rngSortRange.Range(rngStartCell, _
Worksheets("Sheet_3_Name_Goes_Here").Range( _
Worksheets("Sheet 1").Range("A1").End(xlToRight).Column, _
rngEndCell.Row _
) _
).Copy
Worksheets("Sheet 1").Paste
rngSortRange.Range(Worksheets("Sheet_3_Name_Goes_Here").Range(
rngStartCell.Column + Worksheets("Sheet 1").Range("A1").End(xlToRight).Column, _
rngStartCell.Row _
), _
rngEndCell _
).Copy
Worksheets("Sheet 2").Paste

कि कुछ काम की आवश्यकता हो सकती है (उदा।आपको बाद में शीट 3 को रीसेट करने की आवश्यकता हो सकती है, आपको बस पेस्ट करने के बजाय पेस्टवेल्यूशन की आवश्यकता हो सकती है, अन्यथा आप "आत्म-संदर्भित फ़ार्मुलों को चिपकाने" को समाप्त कर देंगे, लेकिन मूल विचार काम करना चाहिए।