मिलान तिथि सीमा के आधार पर रिटर्न डेटा


0

हमारे समूह में एक एक्सेल शीट है जिसका उपयोग घूर्णन जिम्मेदारियों को ट्रैक करने के लिए किया जाता है। एक सरल उदाहरण इस तरह दिया जाएगा:

  • कॉलम A: START में प्रत्येक पंक्ति वस्तु द्वारा दर्शाई गई समयावधि की शुरुआत को परिभाषित करने वाली तिथियां हैं।
  • कॉलम बी: END में प्रत्येक पंक्ति वस्तु द्वारा दर्शाए गए समय अवधि के अंत को परिभाषित करने वाली तिथियां हैं।
  • कॉलम C: ASSIGNEE में उसी लाइन पर START और END द्वारा परिभाषित समयावधि के दौरान दिए गए व्यक्ति को दी गई जिम्मेदारी का प्रतिनिधित्व करने वाले तार हैं।

सूची आमतौर पर START तिथि तक बढ़ते क्रम में है। हालांकि, यह संभव है कि शीट फिर से व्यवस्थित हो सकती है।

सूची में निर्धारित समयावधि के बीच कोई ओवरलैप नहीं होना चाहिए।

मैं जो जोड़ना चाहता हूं वह एक सूचना खंड है जिसमें तीन मान हैं (अलग-अलग कक्षों में):

  • PREVIOUS वर्तमान समय से ठीक पहले की समयावधि के अनुसार ASSIGNEE होगा।
  • वर्तमान में जिम्मेदार ASSIGNEE होगा।
  • अगला हम उस समय की अवधि के अनुसार ASSIGNEE होगा जो हम वर्तमान में कर रहे हैं।

यह मानते हुए कि स्प्रेडशीट उचित क्रम में रहती है (START द्वारा आरोही), PREVIOUS और NEXT को वापस करना आसान होना चाहिए क्योंकि CURRENT के लिए सूत्र का पता चल गया है। लेकिन मुझे यह भी पक्का नहीं है कि इसके लिए शुरुआत कहाँ से की जाए।

जवाबों:


0

मुझे लगता है कि यह करंट खोजने के लिए काम करेगा। मैंने इसे एक बिंदु तक परीक्षण किया है, लेकिन यह अनुमान लगा रहा हूं कि एक विशेषता को अनदेखा करना, इस मामले में, एक गैर-मुद्दा है।

सबसे पहले, बी और सी के बीच एक कॉलम जोड़ें (एसिग्नि डी हो जाता है इसलिए)। इस कॉलम में, इस सूत्र में रखें:

=IF(NOW()-A2>0,IF(NOW()-B2<0,"Yes","No"),"No")

कि हाँ के साथ एक पंक्ति और बाकी के साथ (वर्तमान स्लॉट के लिए) उपज चाहिए।

अब, वर्तमान कार्यभार के लिए अपने सेल में:

=INDEX($C$2:$D$4, MATCH("Yes", $C$2:$C$4,0), 2)

पिछले के लिए: =INDEX($C$2:$D$4, MATCH("Yes", $C$2:$C$4,0) - 1, 2)
अगले के लिए: =INDEX($C$2:$D$4, MATCH("Yes", $C$2:$C$4,0) + 1, 2)

आम तौर पर, MATCH चाहता है कि खोज कॉलम को क्रमबद्ध किया जाए, लेकिन क्योंकि हमें स्तंभ में केवल एक हाँ होना चाहिए, मुझे लगता है (यह अनुमान भाग है) कि हम उस प्रतिबंध को अनदेखा कर सकते हैं।

मेरी परीक्षण स्प्रेडशीट केवल 3 पंक्तियाँ थीं, इसलिए YMMV।

जब वर्तमान पहली पंक्ति है, आदि के लिए आपको पहले की जाँच में कुछ त्रुटि की आवश्यकता होगी, और अपनी स्रोत सीमा का नामकरण शायद एक अच्छा विचार है।

आप अतिरिक्त कॉलम को छिपाना भी चाह सकते हैं।


मैं INDEX & MATCH से ज्यादा परिचित नहीं हूं, सिवाय इसके कि वे कुछ खास तरीकों से VLOOKUP में बेहतर होने वाले हैं। उस ने कहा, मुझे लगता है कि मैं आपके सुझाव को VLOOKUP के साथ कैसे लागू करूंगा, यह भी पिछले और अगले के आसान कवरेज के लिए अनुमति देता है: 1. सी 2 =IF(C1="Current","Next",IF(C3="Current","Previous",IF(AND(NOW()>A2,NOW()<B2),"Current","")))। 2. C2 को अंत तक कॉपी करें। 3. "वर्तमान" के लिए हम करेंगे =VLOOKUP(C:D,"Current",2,FALSE)। 4. "पिछले" और "अगला" के लिए 3 के समान सूत्र लिखें।
इस्जि

बाह। लगता है कि मेरे विचार से एक गोलाकार संदर्भ गड़बड़ हो सकता है।
इज़्ज़ी

अच्छी कोशिश और यह वर्तमान के लिए काम करता है। हालांकि पिछली और अगली वस्तुओं के लिए यह तभी काम करता है जब सूची को क्रमबद्ध किया जाता है, लेकिन जैसा कि प्रश्न में कहा गया है कि यह हमेशा ऐसा नहीं होता है।
जुहेज़

@ MátéJuhász सच। मुझे यकीन नहीं है कि "पिछला" और "अगला" वास्तव में छँटाई के बिना ठीक से पता लगाया जा सकता है, जब तक कि हमारे पास खिड़कियों के लिए गैर-चर अवधि न हो (हम करते हैं) और उन्हें सूत्र में परिभाषित करते हैं। हालांकि छँटाई के साथ, यह तीनों के लिए "हेल्पर कॉलम" में काम करेगा:=IF(NOW()>=A2,IF(NOW()<=B2,"Current",IF(NOW()<=B3,"Previous","")),IF(AND(NOW()>=A1,NOW()<=B1),"Next",""))
इज़्ज़ी

"यह मानते हुए कि स्प्रेडशीट उचित क्रम में रहती है (START द्वारा आरोही) ..." इसलिए पिछले / अगले के बारे में मान्यताओं।
ऊर्ट

0

आदेशित इनपुट:

वर्तमान असाइनमेंट: currRow=match(now(),A:A,1)- जैसा कि आपके डेटा का आदेश दिया गया है यह वर्तमान पंक्ति को खोजेगा, सहायक कॉलम की कोई आवश्यकता नहीं है। सेल के नाम को केवल आसान संदर्भ के लिए वक्र करने के लिए सेट करें।
असाइनमेंट: =indirect("C"& currRow + x)- क्रमशः पिछले, वर्तमान और अगली पंक्तियों के लिए x: -1, 0, 1।

गैर-आदेशित इनपुट:

वर्तमान पंक्ति: currRow=match(max(if(A:A>now(),"",A:A)),A:A,0)- यह एक सरणी सूत्र है, इसलिए आपको इसे CTRL + SHIFT + ENTER के साथ दर्ज करना होगा।
वर्तमान कार्यभार: पहले जैसा ही सूत्र।
पिछला: =indirect("C" & match(max(if(A:A>=indirect("A" & currRow),"",A:A)),A:A,0))- एक सरणी सूत्र भी।
अगला: =indirect("C" & match(min(if(A:A<=indirect("A" & currRow),"",A:A)),A:A,0))- और फिर भी एक सरणी सूत्र।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.