VBA का उपयोग करते हुए अंतिम 1000 विभाजक

Aug 16 2020

मैं 1000 विभाजक के लिए वीबीए समाधान प्राप्त करने की कोशिश कर रहा हूं क्योंकि मेरे मामले में सूत्र का उपयोग करना संभव नहीं है और कस्टम कोड के साथ किया जाना चाहिए। यदि आवश्यक हो तो वर्तमान समाधान उत्तर संख्या प्रारूप में हजारों विभाजक और दशमलव के साथ लिया जाता है

यहाँ कोड है:

Function CustomFormat(InputValue As Double) As String
    CustomFormat = Format(InputValue, "# ###")
    If (Right(CustomFormat, 1) = ".") Then
        CustomFormat = Left(CustomFormat, Len(CustomFormat) - 1)
    End If
End Function

यह 1000 जैसी संख्याओं के लिए काम कर रहा है, लेकिन यह 1000000 के लिए काम नहीं करता है। इसके अलावा 1000000000 काम नहीं करेगा। मैं वर्तमान में समाधान पर काम कर रहा हूं, लेकिन अगर किसी के पास साझा करने के लिए कुछ है, तो इसकी सराहना की जाएगी।

मूल समाधान का उपयोग करने के मामले में:

Function CustomFormat(InputValue As Double) As String
    CustomFormat = Format(InputValue, "#,###.##")
    If (Right(CustomFormat, 1) = ".") Then
        CustomFormat = Left(CustomFormat, Len(CustomFormat) - 1)
    End If
End Function

जवाब

5 SuperSymmetry Aug 16 2020 at 19:40

मुझे लगता है कि vba को आपके क्षेत्रीय सेटिंग्स में परिभाषित हजारों विभाजक की आवश्यकता है। चूंकि यह आपके मामले में एक अल्पविराम है, आप इस तरह से कुछ कर सकते हैं

Function CustomFormat(InputValue As Double) As String
    CustomFormat = Format(InputValue, "#,###")
    If (Right(CustomFormat, 1) = ".") Then
        CustomFormat = Left(CustomFormat, Len(CustomFormat) - 1)
    End If
    CustomFormat = Replace(CustomFormat, ",", " ")
End Function

एक और दृष्टिकोण रजिस्ट्री से विभाजक को पढ़ने के लिए है। यह विभिन्न क्षेत्रीय सेटिंग्स में काम करना चाहिए।

Function CustomFormat(InputValue As Double) As String
    Dim sThousandsSep As String
    Dim sDecimalSep As String
    Dim sFormat As String
    
    sThousandsSep = Application.International(xlThousandsSeparator)
    sDecimalSep = Application.International(xlDecimalSeparator)
    
    ' Up to 6 decimal places
    sFormat = "#" & sThousandsSep & "###" & sDecimalSep & "######"
    
    CustomFormat = Format(InputValue, sFormat)
    If (Right$(CustomFormat, 1) = sDecimalSep) Then CustomFormat = Left$(CustomFormat, Len(CustomFormat) - 1)
    End If
    
    ' Replace the thousands separator with a space
    ' or any other character
    CustomFormat = Replace(CustomFormat, sThousandsSep, " ")
End Function

Application.International@RonRosenfeld द्वारा सुझाए अनुसार उपयोग करने के लिए परिवर्तित फ़ंक्शन को संपादित करें

1 TinMan Aug 16 2020 at 23:38

बड़ी संख्याओं को शामिल करने के लिए आपको अपना संख्या प्रारूप बढ़ाने की आवश्यकता है।

### ### ## 0 ","