क्या एक्सेल एक सूत्र और उसका परिणाम एक साथ दिखा सकता है?


10

मुझे पता है कि एक्सेल में प्रदर्शन मूल्यों और प्रदर्शन सूत्रों के बीच टॉगल करना संभव है । मुझे आंकड़े वर्ग के लिए असाइनमेंट को चालू करने की आवश्यकता है क्योंकि एक मुद्रित एक्सेल शीट सूत्र और परिणाम दोनों दिखा रहा है । अभी प्रशिक्षक हमें या तो सूत्र की प्रतिलिपि बनाता है और गणना किए गए मान के बगल में पाठ के रूप में पेस्ट करता है, या मूल्य की प्रतिलिपि बनाता है और सूत्र के बगल में चिपकाता है। यह बहुत अक्षम है, त्रुटि के लिए प्रवण (यदि आप कॉपी-पेस्ट करने के बाद सूत्र या मूल्यों को बदलते हैं), और आमतौर पर समय की बर्बादी होती है।

क्या एक्सेल के फॉर्मूले और उसके मूल्य को उसी सेल में दिखाने का कोई तरीका है ? यदि नहीं, तो क्या कोई फ़ंक्शन है जो संदर्भित सेल से सूत्र को सादे पाठ के रूप में प्रदर्शित करेगा, उदाहरण के लिए, =showformula(A1)जो (यदि वे सेल के सूत्र और मूल्य थे ) के =sum(A2:A5) बजाय प्रिंट आउट करेंगे ?25A1

मैं एक्सेल 2010 का उपयोग कर रहा हूं, लेकिन एक सामान्य उत्तर जो एक्सेल के किसी भी हाल के संस्करण के लिए काम करता है, अच्छा होगा।

जवाबों:


18

मुझे इसके लिए किसी भी अंतर्निहित कार्यों की जानकारी नहीं है। हालाँकि, आप जो चाहते हैं उसे पूरा करने के लिए एक उपयोगकर्ता-परिभाषित VB फ़ंक्शन बना सकते हैं।

प्रेस Alt + F11 परियोजना Explorer में VBA संपादक, राइट क्लिक खोलने के लिए और चयन करने के लिए सम्मिलित करें -> मॉड्यूल । निम्नलिखित कोड चिपकाएँ:

Function GetFormula(cell)  
  GetFormula = cell.Formula  
End Function

अब आप =GetFormula(A1)उस सेल का फॉर्मूला दिखाने के लिए उपयोग कर सकते हैं ।


मैंने इस रूटीन का उपयोग किया - मुझे एक त्रुटि मिल रही है परिवर्तनीय परिभाषित नहीं है गेटफॉर्मुला के लिए चर घोषणा क्या होनी चाहिए?
प्रसन्न

@Prasanna GetFormulaएक चर नहीं है, यह एक फ़ंक्शन है। आप एक्सेल के किस संस्करण का उपयोग कर रहे हैं?
Indrek

एक्सेल 2013. मेरी अज्ञानता को माफ करें - मैंने वीबीए सीखना शुरू कर दिया है
प्रसन्ना

2

यहाँ एक तरीका है कि आप पहले क्या कर रहे थे को स्वचालित करें। यह लोनलीकेनाइट के उत्तर के सर्वश्रेष्ठ भागों को अपने स्वयं के प्रश्न , इंड्रेक के उत्तर और बिलिस के उत्तर को जोड़ती है:

Sub Show_Formulas()
    Dim rng As Range, cell As Range
    row_offset = 10
    col_offset = 0
    Set rng = Range(Cells(1, 1), Cells(5, 7))

    On Error GoTo ErrHandler
    For Each cell In rng
        cell.Offset(row_offset, col_offset) = "'" & cell.Formula
    Next cell
    Exit Sub

ErrHandler:
    MsgBox "The cow jumped over the moon", , "Error!", Err.HelpFile, Err.HelpContext

End Sub

निर्दिष्ट सीमा में प्रत्येक सेल के लिए (यहां हार्ड-कोडित के रूप में A1:G5), यह सेल के सूत्र को कॉपी करता है, जो एपोस्ट्रोफ द्वारा संरक्षित है, सेल को एक निश्चित ऑफसेट दूर। (देखें कि मैं MS Office में VBA कैसे जोड़ सकता हूँ? Excel में VBA के उपयोग पर मार्गदर्शन के लिए।) आपको प्रिंट करने से पहले आपको इस मैक्रो को चलाना याद रखना होगा।

या, PrintOut , , , Trueपहले एक बयान जोड़ें Exit Sub, और यह मैक्रो आपके लिए शीट प्रिंट करेगा। (तुम बस मुद्रित करने के लिए याद करने के लिए है इस मैक्रो का उपयोग करने के लिए।) चौथे पैरामीटर PrintOutहै पूर्वावलोकन , करने के लिए सेट Trueशीट मुद्रण (इस प्रकार आप रद्द करने का विकल्प दे रही है) से पहले मुद्रण पूर्वावलोकन आह्वान माइक्रोसॉफ्ट एक्सेल के लिए या Falseमुद्रित करने के लिए (या छोड़े गए) शीट तुरंत, बिना शर्त।

या, यदि आप वास्तव में इसे चलाने के लिए भूल जाने के बारे में चिंतित हैं, तो आप Private Sub Worksheet_Changeकिसी भी समय कार्यपत्रक में कोई भी परिवर्तन करने के लिए प्रदर्शन योग्य सूत्रों को अपडेट करने के लिए उपयोग कर सकते हैं ।


2

शायद यह ध्यान देने योग्य है कि एक्सेल 2013 के रूप में, इसके लिए एक मूल कार्य है FORMULATEXT:।

FORMULATEXTफ़ंक्शन पर समर्थन डॉट ऑफिस डॉट कॉम लेख से :

विवरण

एक सूत्र के रूप में एक स्ट्रिंग लौटाता है।

वाक्य - विन्यास

FORMULATEXT (संदर्भ)

FORMULATEXT फ़ंक्शन सिंटैक्स में निम्न तर्क होते हैं:

  • संदर्भ आवश्यक है। किसी कक्ष या कक्षों की श्रेणी का संदर्भ।

टिप्पणियों

  • यदि आप संदर्भित सेल का चयन करते हैं, तो फॉर्मूला फ़ंक्शन फॉर्मूला बार में प्रदर्शित होता है।

1
अच्छा लगा। अंदर जाने का रास्ता बनाया गया है। Indreks समाधान के विपरीत, यह एक त्रुटि दिखाता है यदि फ़ील्ड कोई सूत्र नहीं है, तो आप इससे पहले आसानी से जांच कर सकते हैं: = IF (ISFORMULA (B1); FORMULATEXT (B1); B1)
Pehele


0

नि: शुल्क ऐड-इन, फॉर्मूलाडेस्क आपके लिए ऐसा कर सकता है, साथ ही सूत्र को अधिक समझने योग्य तरीके से प्रदर्शित कर सकता है और सूत्र में त्रुटियों को इंगित कर सकता है।

जैसा कि आप नीचे स्क्रीनशॉट में देख सकते हैं, आप सेल के अंतिम परिणाम, और मूल सूत्र, और एक साथ सूत्र के संवर्धित प्रदर्शन को देख सकते हैं, जैसा आपने पूछा था।

[खुलासा: मैं फॉर्मूलाडेस्क का लेखक हूं]

यहाँ छवि विवरण दर्ज करें


1
अपनी संबद्धता का खुलासा करने के लिए धन्यवाद। ऐसा लगता है कि आपके पास स्टैक एक्सचेंज में पिछले योगदान हैं, जो बहुत अच्छा है, लेकिन मैं सुझाव दूंगा कि सेल्फ प्रमोशन पॉलिसी को फिर से सुरक्षित किया जाए। आपने कुछ भी गलत नहीं किया है, लेकिन अक्सर जब उपयोगकर्ता किसी ऐसे व्यक्ति को देखते हैं, जिनके साइट पर केवल उत्तर ही किसी चीज़ को बढ़ावा दे रहे हैं, तो वे इसे स्पैम के रूप में चिह्नित करते हैं। यदि आप एक स्क्रीनशॉट को एक उदाहरण के रूप में शामिल कर सकते हैं तो यह इस उत्तर को भी सुधार देगा। धन्यवाद!
18'14

मुझे यह बताने के लिए धन्यवाद। मैंने आपके मूल प्रश्न का उत्तर देने के लिए अपना उत्तर संपादित किया है।
गैरेथ हैटर

0

मैं प्रोग्रामिंग के बारे में बहुत कम जानता हूं और मेरा जवाब सुरुचिपूर्ण नहीं है। एक भविष्य के इंजीनियर के रूप में मुझे एक्सेल में एक फ़ंक्शन की आवश्यकता थी जो मुझे सूत्र दिखा सके। Indrek समाधान में मैंने जो समस्या पाई है, वह यह है कि उनका कार्य मेरे लिए एक सूत्र है: "C9 * C9 * pi ()" और मैं चाहता था कि सूत्र के प्रदर्शन में सेल के नाम (C9) के मूल्यों में बदल दिए जाएं उन कोशिकाओं; और जब भी उन नंबरों को मूल C9 सेल में बदला जाता है, तो वे स्वतः ही बदल जाएंगे।

मेरा कोड बहुत बुनियादी फ़ार्मुलों के साथ काम करता है। मुझे कभी भी कहीं और ऐसा कुछ नहीं मिला, यह किसी की मदद कर सकता है या नहीं। कोई इसे एक सभ्य स्तर तक सुधारने में सक्षम हो सकता है। जैसा कि मैंने कहा, यह मेरे लिए काम करता है और मैं प्रोग्रामिंग में कम कौशल के साथ एक व्यावहारिक लड़का हूं।

पहला कार्य बिल्कुल नहीं है। यह से पुनर्प्राप्त किया गया था:

/programming/10951687/how-to-search-for-string-in-an-array

Function IsInArray(ar, item$) As Boolean
    Dim delimiter$, list$

    ' Chr(7) is the ASCII 'Bell' Character.
    ' It was chosen for being unlikely to be found in a normal array.
    delimiter = Chr(7)

    ' Create a list string containing all the items in the array separated by the delimiter.
    list = delimiter & Join(ar, delimiter) & delimiter

    IsInArray = InStr(list, delimiter & item & delimiter) > 0
End Function

Function GETFORMULA(cell)

Dim alfabeto As String
Dim alfabetos() As String
Dim formula As String
Dim celda As String
Dim cutter As String
Dim cutterarray() As String


'The formula is taken from the cell
formula = cell.formula


'And alphabet is declared to be compared with the formula
alfabeto = "A,B,C,D,E,F,G,H,I,J,K,L,M,O,P,Q,R,S,T,U,V,W,X,Y,Z"


'An array is declared with the elements of the alphabet string
alfabetos = Split(alfabeto, ",")


'Replacing common functions with a symbol, otherwise the code will crash
formula = Replace(formula, "LOG", "#")
formula = Replace(formula, "SQRT", "?")
formula = Replace(formula, "PI", "ñ")

'MsgBox (formula)
Debug.Print formula

'Symbols to identify where the name of a cell might end are declared
cutter = "*,/,+,-,^,(,)"

'An array is declared with the symbols from the string that has been just declared
cutterarray = Split(cutter, ",")

Dim nuevaformula As String


'For the i position in the lenght of the formula
Dim index As Integer

For i = 1 To Len(formula)
    Debug.Print "Para i iterativo=", i
    Debug.Print "Se tiene el digito", Mid(formula, i, 1)



        'if the i element is not a letter, then add it to the chain of characters
        If IsInArray(alfabetos, Mid(formula, i, 1)) = False Then
        Debug.Print "Que es un numero"
        nuevaformula = nuevaformula + Mid(formula, i, 1)
        Debug.Print nuevaformula


        'if the element is a letter, then it´s necessary to get the name of the cell, found all the numbers
        'of the cell until a symbol to cut appears, like a: "*","/","+","-"
        Else
        Debug.Print "Encontramos una letra"
        'Empezamos a buscar más números
        'Numbers in the cell name are going to be find to isolate the cell number

            For s = 2 To 7
            celda = Mid(formula, i, s)
            Debug.Print "Incrementamos una posición quedando", celda

                If (i + s - 1 = Len(formula)) = False Then



                    'if a symbol to cut is not found in the last increment the last number hasn´t been reached
                    'and it´s necessary to keep loking for it
                    If IsInArray(cutterarray, Right(celda, 1)) = False Then
                    celda = Mid(formula, i, s)
                    Debug.Print "En el incremento no se encontró cutter. La i correcta es", i + s - 1


                    Else

                    'if it´s found the name of the cell is
                    celda = Mid(formula, i, s - 1)
                    Debug.Print "Se encontró un cutter la celda es", celda

                    'the search cycle has to be broken
                    Debug.Print s, i
                    i = i + s - 2
                    Debug.Print "Daremos salto a i=", i
                    Debug.Print celda
                    nuevaformula = nuevaformula + CStr(Range(celda).Value)
                    Exit For
                    End If
                Else
                Debug.Print "se alcanzó la máxima cantidad de iteraciones posibles"
                celda = Mid(formula, i, s)
                Debug.Print "La celda encontrada fue", celda
                nuevaformula = nuevaformula + CStr(Range(celda).Value)
                Debug.Print nuevaformula
                nuevaformula = Replace(nuevaformula, "#", "LOG10")
                nuevaformula = Replace(nuevaformula, "?", "raiz")
                nuevaformula = Replace(nuevaformula, "ñ", "pi")
                ISAAC = nuevaformula
                Debug.Print (nuevaformula)
                Exit Function
                End If


            'MsgBox (nuevaformula)
            Next s
        End If
Next i

nuevaformula = Replace(nuevaformula, "#", "LOG10")
nuevaformula = Replace(nuevaformula, "?", "raiz")
nuevaformula = Replace(nuevaformula, "ñ", "pi")

GETFORMULA = nuevaformula
Debug.Print (nuevaformula)
End Function


-2

यहाँ एक समाधान है:

  1. 'सूत्र की शुरुआत में एक एपॉस्ट्रॉफ़ ( ) डालें
  2. इसे नीचे की पंक्ति या उसके साथ वाले कॉलम में कॉपी करें
  3. मूल सूत्र पर वापस जाएं और एपोस्ट्रोफ़ को हटा दें

यह काम।


4
इसे बदलने के लिए हर बार फॉर्मूला को फिर से कॉपी करने की आवश्यकता होती है। स्प्रैडशीट को बार-बार बदलते समय, कॉपी किए गए फॉर्मूलों के लिए असली फॉर्मूले के साथ सिंक से बाहर निकलना बहुत आसान होगा।
20

यह उन मामलों की सटीक स्थिति है जिन्हें प्रश्न हल करने का प्रयास कर रहा है।
एलेक्स एम।

-3

मान के साथ पाठ मिलाएं मान लीजिए सेल A1 में 9999 नंबर है

="Total: "&TEXT(A1,"$#,##0.00")

यह सूत्र "कुल: $ 9,999.00" प्रदर्शित करेगा

एक अन्य उदाहरण जो वर्तमान दिनांक / समय के साथ पाठ प्रदर्शित करने के लिए Now फ़ंक्शन का उपयोग करता है

="Report printed on: "&TEXT(NOW(),"mmmm d, yyyy at h:mm AM/PM")

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