ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
44 visibility
موضوع: آفیس توسط:

ریک دو کاربرگ دارد که باید آنها را با یکدیگر مقایسه کند تا تفاوت ها را برجسته کند. مقایسه باید آنچه را که نمایش داده می شود، مقایسه نمی کند، بلکه باید فرمول های موجود در هر یک از سلول ها را مقایسه کند. به این ترتیب ریک امیدوار است که کشف کند که فرمول ها در هر کاربرگ کجا متفاوت هستند.

روش های مختلفی برای مقایسه فرمول ها وجود دارد. در نسخه‌های خاصی از اکسل، به یک افزونه مقایسه دسترسی دارید که می‌تواند این کار را برای شما انجام دهد. اگر از Office Professional Plus 2013 یا Office 365 ProPlus استفاده می کنید، می توانید از افزونه مقایسه صفحه گسترده استفاده کنید. اطلاعات مربوط به این افزونه را می توانید در اینجا بیابید:

https://support.office.com/en-us/article/Overview-of-Spreadsheet-Compare-13fafa61-62aa-451b-8674-242ce5f2c986

اگر از Office Professional Plus 2013 یا Office 365 استفاده می کنید، می توانید از افزونه Spreadsheet Inquire نیز استفاده کنید. اطلاعات این افزونه در اینجا قرار دارد:

https://support.office.com/en-nz/article/What-you-can-do-with-Spreadsheet-Inquire-ebaf3d62-2af5-4cb1-af7d-e958cc5fad42

با توجه به اینکه همه از یکی از این نسخه‌های اکسل استفاده نمی‌کنند یا ممکن است نخواهند از افزونه استفاده کنند، کارهای دیگری وجود دارد که می‌توانید انجام دهید. در اکسل 2013 و نسخه های بعدی یک تابع کاربرگ مفید به نام FORMULATEXT وجود دارد. می توانید از این تابع برای بازیابی فرمول ذخیره شده در یک سلول به این صورت استفاده کنید:

=FORMULATEXT(A7)

این فرمول موجود در سلول A7 (در این مورد) را برمی گرداند. اگر سلول حاوی فرمول نباشد، یک خطای #N/A برمی‌گرداند. شما می توانید از این رفتار برای ایجاد یک شاخص در یک "کاربرگ مقایسه" استفاده کنید که آیا فرمول ها برابر هستند یا خیر. فقط یک کاربرگ جدید ایجاد کنید و آن را در سلول A1 قرار دهید:

=IF(FORMULATEXT(Sheet1!A1)=FORMULATEXT(Sheet2!A1),"","Different")

فرمول را تا جایی که می خواهید به سمت پایین و سمت راست کپی کنید. این تفاوت بین سلول های مربوطه در Sheet1 و Sheet2 را نشان می دهد.

به یاد داشته باشید که FORMULATEXT در اکسل 2013 معرفی شد، بنابراین این رویکرد در نسخه های قدیمی اکسل کار نمی کند. اگر از نسخه دیگری استفاده می کنید (یا حتی اگر از اکسل 2013 استفاده می کنید) می توانید از یک ماکرو برای علامت گذاری تفاوت بین کاربرگ ها استفاده کنید. بسیاری از رویکردهای کلان وجود دارد که می توانید از آنها استفاده کنید. در زیر روشی کوتاه برای انجام مقایسه آورده شده است.

Sub ComparaFormulas1()
    Dim Check As Worksheet
    Dim Master As Worksheet
    Dim c As Range

    Set Check = ActiveSheet
    Set Master = Worksheets("Master")

    For Each c In Check.UsedRange
        If c.HasFormula Then
            If c.Formula <> Master.Range(c.Address).Formula Then
                c.Interior.Color = RGB(255, 0, 0)
            End If
        End If
    Next c
End Sub

برای استفاده از این ماکرو، کتاب کاری را که می خواهید مقایسه کنید نمایش دهید. فرض می کند که می خواهید با همان سلول ها در یک کاربرگ به نام "Master" مقایسه کنید. (در صورتی که کاربرگ استاندارد شما نام متفاوتی داشته باشد، واضح است که می توانید آن را در ماکرو تغییر دهید.) هر سلول در کاربرگ فعلی با سلول مربوطه در کاربرگ اصلی مقایسه می شود. اگر سلول ها حاوی فرمول هستند و آن فرمول ها متفاوت هستند، رنگ پس زمینه سلول در کاربرگ فعلی به قرمز تغییر می کند.

چنین رویکردی بدیهی است که قالب بندی کاربرگ مورد مقایسه را تغییر می دهد. اگر ترجیح می دهید قالب بندی را تغییر ندهید، اما در عوض به سادگی لیستی از سلول های دارای تفاوت را می خواهید، می توانید از تغییرات زیر در ماکرو استفاده کنید:

Sub ComparaFormulas2()
    Dim Check As Worksheet
    Dim Master As Worksheet
    Dim c As Range
    Dim sTemp As String
    Dim lDif As Long

    Set Check = ActiveSheet
    Set Master = Worksheets("Master")
    sTemp = ""
    lDif = 0

    For Each c In Check.UsedRange
        If c.HasFormula Then
            If c.Formula <> Master.Range(c.Address).Formula Then
                lDif = lDif + 1
                sTemp = sTemp & vbCrLf & lDif & ": " & c.Address
            End If
        End If
    Next c
    If lDif > 0 Then
        sTemp = "These were the differences" & vbCrLf & sTemp
    Else
        sTemp = "There were no differences"
    End If
    MsgBox sTemp
End Sub

همچنین می توانید یک تابع تعریف شده توسط کاربر (UDF) ایجاد کنید که محدوده هایی را برای مقایسه ها می پذیرد. به این ترتیب می توانید از آن به روش های مختلف استفاده کنید.

Function CompareFormulas3(rng1 As Range, rng2 As Range)
    Dim x As Long

    If rng1.Count <> rng2.Count Then
        Range sizes do not match
        CompareFormulas = CVErr(xlValue)
    Else
        CompareFormulas = True     Assume all the same
        For x = 1 To rng1.Count
            If rng1(x).Formula <> rng2(x).Formula Then
                Formulas do not match
                CompareFormulas = False
                x = rng1.Count     No need to keep comparing
            End If
        Next x
    End If
End Function

اگر فقط می‌خواهید تأیید کنید که محدوده‌ای از سلول‌ها در هر دو کاربرگ دارای فرمول‌های یکسان هستند، می‌توانید از چیزی مانند زیر استفاده کنید:

=CompareFormulas3(Sheet1!A1:Z1000,Sheet2!A1:Z1000)

اگر همه سلول‌ها فرمول‌های یکسانی داشته باشند، تابع TRUE، اگر هر کدام از سلول‌ها فرمول‌های متفاوتی داشته باشند FALSE، یا اگر دو محدوده یکسان نباشند، خطای #Value را برمی‌گرداند.

اگر می‌خواهید تفاوت‌ها را برجسته کنید، می‌توانید از UDF در یک قانون قالب‌بندی شرطی استفاده کنید. با فرض اینکه می‌خواهید قالب شرطی را برای سلول‌های Sheet1 اعمال کنید، فقط مشخص کنید که قانون باید از یک فرمول استفاده کند و سپس از آن به عنوان فرمول استفاده کنید:

=NOT(CompareFormulas3(Sheet2!A1,A1))

اگر هر یک از سلول‌های Sheet1 با سلول‌های مربوطه در Sheet2 مطابقت نداشته باشد، طبق هر قالب‌بندی که در قانون قالب‌بندی شرطی تعریف کرده‌اید، قالب‌بندی می‌شوند.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 34 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 25 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 38 visibility
0 دوستدار 0 امتیاز منفی
1 پاسخ 61 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 50 visibility

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

306 نفر آنلاین
1 عضو و 305 مهمان در سایت حاضرند
اعضای حاضر در سایت
بازدید امروز: 7389
بازدید دیروز: 25180
بازدید کل: 20344742
...