एक्सेल लेटर प्लस नंबर फॉर्मेट


0

मुझे एक विशिष्ट कॉलम पर एक निश्चित प्रारूप को बाध्य करने का एक तरीका पता चल रहा है।

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

(उदाहरण: A1, A01, A-1, A-01)

यह A1, A2 के बजाय A10 के ऊपर A1 होने के साथ थोड़ा दर्द को हल करता है। मैं चाहता हूं कि इसे ठीक किया जाए ताकि कोई भी बात टाइप न हो, इसे एक लेटर + 2 अंकों की संख्या के प्रारूप (A01) में सुधारा जाता है

अग्रिम में धन्यवाद


1
स्वरूपण द्वारा, आप मूल्य में टाइप किए गए ऑटो को सही नहीं कर सकते हैं, बस इसके प्रदर्शन प्रारूप को बदल सकते हैं। कुछ भी जो एक पत्र से शुरू होता है, उसे एक्सेल द्वारा एक पाठ माना जाता है, और किसी भी स्वरूपण को उस अर्थ में लागू नहीं किया जाएगा जिसे आप चाहते हैं।
Aganju

आपको इसे करने के लिए vba में Worksheet_Change घटना का उपयोग करना होगा।
Scott Craner

मैं देखूंगा कि शायद एक vba स्क्रिप्ट काम करेगी धन्यवाद
Ivan

जवाबों:


1

यह टाइप-इन कॉलम के भीतर संभव नहीं है।

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

एक और विचार, फ्री-फॉर्म में प्रवेश करने के बजाय प्रवेश या इसके टुकड़े का चयन करने के लिए पुल-डाउन मेनू का उपयोग करने के तरीके देखें। इसके अलावा, उपयोगकर्ता के लिए प्रारूप संकेत शामिल करें।
fixer1234

0

तुम भी समझदार संकेतों और संदेशों के साथ, डेटा सत्यापन का उपयोग कर सकते हैं। डेटा सत्यापन सूत्र, (यह मानते हुए कि आप अक्षरों के लिए ऊपरी मामला चाहते हैं) होगा:

=AND(CODE(A1)>=65,CODE(A1)<=90,CODE(MID(A1,2,1))>=48,CODE(MID(A1,2,1))<=57,CODE(MID(A1,3,1))>=48,CODE(MID(A1,3,1))<=57)

0

वर्कशीट कोड क्षेत्र में निम्न ईवेंट मैक्रो को रखें:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim B As Range, s As String
    Set B = Range("B:B")
    If Intersect(Target, B) Is Nothing Then Exit Sub
    s = Target.Value
    If Len(s) <> 3 Then GoTo fixit
    If Not Left(s, 1) Like "[A-Z]" Then GoTo fixit
    If Not IsNumeric(Mid(s, 2, 2)) Then GoTo fixit
    Exit Sub
fixit:
    Application.EnableEvents = False
        Target.Value = "A00"
    Application.EnableEvents = True
End Sub

यह नमूना मैक्रो मॉनिटर और कॉलम में प्रविष्टियों को सही करता है बी । यदि प्रविष्टियाँ मान्य हैं, तो उन्हें अकेला छोड़ दिया जाता है। यदि कोई प्रविष्टि अमान्य है, तो उसे बदल दिया जाता है A00


0

यदि आप केवल मूल्य की जाँच करना चाहते हैं और जाँच तर्क बहुत जटिल नहीं था तो यह मानक एक्सेल डेटा सत्यापन के साथ किया जा सकता है। हालाँकि, चूंकि आप मूल्य को सही करने के लिए पुन: स्वरूपित करना चाहते हैं, इसलिए आपको Office के लिए VBA या Visual Studio टूल्स का उपयोग करना होगा। निम्नलिखित एक साधारण VBA मैक्रो है जो आप चाहते हैं।

जादू तब होता है जब Worksheet_Change घटना दूर हो जाती है। उदाहरण के लिए, मेरा मानना ​​है कि आप पहले कॉलम में एकल मान दर्ज कर रहे हैं। CorrectPartNo समारोह भारी उठाने करता है। यह दर्ज मूल्य का विश्लेषण करता है और एक सही ढंग से स्वरूपित मूल्य देता है या यह इंगित करने के लिए कुछ भी नहीं है कि एक सत्यापन त्रुटि थी (यह केवल अधिकतम लंबाई की जांच करता है)। प्रसंस्करण आपके उदाहरण के साथ काम करता है, लेकिन यह वास्तविक दुनिया के लिए बहुत सरल है। इसे नियमित अभिव्यक्ति या अन्य समान शक्तिशाली प्रसंस्करण के साथ आसानी से बढ़ाया जा सकता है।

ईवेंट हैंडलर या तो सेल को सही ढंग से फॉर्मेट किए गए पार्ट नंबर के साथ अपडेट करके जारी रखता है या यह उपयोगकर्ता द्वारा दर्ज किए गए मान को त्रुटि को इंगित करने के लिए बोल्ड और लाल बनाता है।

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim NewValue As String

    If (Target.Column = 1 And Target.Count = 1) Then
        Application.EnableEvents = False
        NewValue = CorrectPartNo(Target.Value)
        If (Len(NewValue) = 0) Then
            Target.Font.Color = vbRed
            Target.Font.Bold = True
        Else
            Target.Value = NewValue
        End If
        Application.EnableEvents = True
    End If
End Sub

Function CorrectPartNo(PartNo As String)
    Dim StartPartNo As String
    Dim EndPartNo As String
    Dim EndPartNoPosition As Integer

    StartPartNo = Left(PartNo, 1)
    If (Mid(PartNo, 2, 1) = "-") Then
        If (Len(PartNo) > 4) Then
            CorrectPartNo = ""
            Exit Function
        Else
            EndPartNoPosition = 3
        End If
    Else
        If (Len(PartNo) > 3) Then
            CorrectPartNo = ""
            Exit Function
        Else
            EndPartNoPosition = 2
        End If
    End If
    EndPartNo = Right("0" + Mid(PartNo, EndPartNoPosition), 2)

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