فهرست مطالب
میخواهید یک دستور IF با متن عام بسازید، اما هر بار شکست میخورد؟ مشکل در فرمول شما نیست بلکه در خود تابع است - Excel IF از کاراکترهای wildcard پشتیبانی نمی کند. با این حال، راهی برای به کار انداختن آن برای تطابق متن جزئی وجود دارد و این آموزش به شما یاد می دهد که چگونه.
هر زمان که بخواهید تطبیق جزئی یا فازی را در اکسل انجام دهید، واضح ترین راه حل این است. برای استفاده از حروف عام اما اگر یک تابع خاص که باید از آن استفاده کنید از کاراکترهای wildcard پشتیبانی نمی کند چه؟ متأسفانه Excel IF یکی از این توابع است. این به ویژه ناامید کننده است با توجه به اینکه سایر توابع "شرطی" مانند COUNTIF، SUMIF و AVERAGEIFS با حروف عام کاملاً خوب کار می کنند.
خوشبختانه، این مانعی نیست که بتواند یک کاربر خلاق اکسل را متوقف کند :) با ترکیب IF با توابع دیگر، می توانید آن را مجبور کنید تا یک تطابق جزئی را ارزیابی کند و یک جایگزین خوب برای فرمول IF wildcard Excel دریافت کند.
چرا تابع Excel IF با wildcard کار نمی کند
در جدول نمونه زیر، فرض کنید می خواهید بررسی کنید که آیا شناسه های ستون اول حاوی حرف "A" هستند یا خیر. اگر پیدا شد - "بله" را در ستون B نشان دهید، اگر نه - "خیر" را نمایش دهید.
به نظر می رسد گنجاندن متن عام در آزمون منطقی راه حل آسانی باشد:
=IF(A2="*a*","Yes", "No")
اما متأسفانه کار نمی کند. فرمول "نه" را برای همه سلول ها، حتی آنهایی که حاوی "A" هستند، برمی گرداند:
چرایک دستور IF شکست می خورد؟ از همه ظاهر، اکسل حروف عام استفاده شده با علامت مساوی یا سایر عملگرهای منطقی را تشخیص نمی دهد. با نگاهی دقیق تر به لیست توابع پشتیبانی کننده از حروف عام، متوجه خواهید شد که نحو آنها یک متن عام را فرض می کند که مستقیماً در یک آرگومان مانند این ظاهر می شود:
=COUNTIF(A2:A10, "*a*")
Excel IF حاوی متن جزئی است
اکنون که دلیل شکست فرمول IF wildcard را میدانید، بیایید سعی کنیم بفهمیم که چگونه میتوان آن را به کار انداخت. برای این کار، ما به سادگی تابعی را جاسازی می کنیم که حروف عام را در تست منطقی IF می پذیرد، یعنی تابع COUNTIF:
IF(COUNTIF( cell, "* text* ")، value_if_true، value_if_false)با این رویکرد، IF هیچ مشکلی با درک حروف عام ندارد و سلول هایی که حاوی "A" یا "a" هستند را به طور بی عیب و نقصی شناسایی می کند (زیرا COUNTIF به حروف بزرگ و کوچک حساس نیست):
=IF(COUNTIF(A2, "*a*"),"Yes", "No")
این فرمول به B2 یا هر سلول دیگری در ردیف 2 می رود، و سپس می توانید آن را به تعداد سلول های مورد نیاز پایین بکشید:
این راه حل همچنین می تواند برای مکان یابی رشته های یک الگوی خاص استفاده شود. با فرض اینکه فقط شناسه های متشکل از 2 گروه 2 کاراکتری که با خط فاصله از هم جدا شده اند معتبر هستند، می توانید از "??-??" استفاده کنید. رشته حروف عام برای شناسایی آنها:
=IF(COUNTIF(A2, "??-??"), "Valid", "")
این فرمول چگونه کار می کند:
برای تست منطقی اگر، از تابع COUNTIF استفاده میکنیم که تعداد سلولهای منطبق با حروف عام مشخص شده را شمارش میکند.رشته از آنجایی که محدوده معیار یک سلول (A2) است، نتیجه همیشه 1 (تطابق یافت می شود) یا 0 (تطابق یافت نشد) است. با توجه به اینکه 1 برابر است با TRUE و 0 با FALSE، فرمول "معتبر" (value_if_true) را زمانی که تعداد 1 است و یک رشته خالی (value_if_false) را زمانی که تعداد 0 است، برمیگرداند.
IF ISNUMBER SEARCH فرمول برای جزئی matches
یک راه دیگر برای وادار کردن Excel IF به کار برای تطابق متن جزئی، گنجاندن تابع FIND یا SEARCH در آزمون منطقی است. تفاوت این است که FIND به حروف بزرگ و کوچک حساس است در حالی که SEARCH حساس نیست.
بنابراین، بسته به اینکه بخواهید حروف کوچک و بزرگ را به عنوان کاراکترهای یکسان یا متفاوت در نظر بگیرید، یکی از این فرمول ها به خوبی کار می کند:
فرمول حساس به حروف کوچک برای مطابقت جزئی:
IF(ISNUMBER(SEARCH(" متن"، سلول))، value_if_true، value_if_false )حساس به بزرگی و کوچکی فرمول برای مطابقت جزئی:
IF(ISNUMBER(FIND(" متن"، سلول))، value_if_true، value_if_false )از آنجایی که هر دو تابع برای انجام یک نوع مطابقت "سلول حاوی" طراحی شدهاند، در این مورد به علامتهای عام نیازی نیست.
به عنوان مثال، برای شناسایی شناسههای حاوی "A" یا "a" ، فرمول این است:
=IF(ISNUMBER(SEARCH("A", A2)), "Yes", "No")
فقط برای جستجوی بزرگ "A" و نادیده گرفتن "a"، فرمول این است:
=IF(ISNUMBER(FIND("A", A2)), "Yes", "No")
در B6 در تصویر زیر، می توانید تفاوت نتیجه را مشاهده کنید:
این فرمول چگونه کار می کند:
در قلبدر فرمول، ترکیبی از ISNUMBER و SEARCH (یا FIND) وجود دارد:
ISNUMBER(SEARCH("A", A2))
عملکرد SEARCH به دنبال متن مشخص شده ("A" در این مثال) می گردد و موقعیت آن را در داخل برمی گرداند. یک رشته در A2 اگر متن پیدا نشد، یک خطای #VALUE برگردانده می شود. از آنجایی که SEARCH و FIND هر دو برای انجام یک نوع مطابقت "سلول حاوی" طراحی شدهاند، در این مورد واقعاً به علامتهای عام نیازی نیست.
عملکرد ISNUMBER یک عدد را به TRUE و هر مقدار دیگری از جمله خطا را به FALSE تبدیل میکند. . مقدار منطقی مستقیماً به آزمون منطقی IF می رود. در مورد ما، A2 حاوی "A" است، بنابراین ISNUMBER TRUE را برمی گرداند:
IF(TRUE, "Yes", "No")
در نتیجه، IF مقدار تنظیم شده برای آرگومان value_if_true را برمی گرداند، که "بله".
Excel IF OR عبارت with wildcards
آیا نیاز به شناسایی سلول هایی دارید که حاوی یکی از رشته های متن عام هستند؟ در این مورد، می توانید عبارت کلاسیک IF OR را با فرمول COUNTIF یا ISNUMBER SEARCH که در بالا توضیح داده شد ترکیب کنید.
به عنوان مثال، برای جستجوی "aa" یا "bb" در A2 بدون توجه به حروف کوچک و بزرگ و برگرداندن " بله" اگر یکی از آنها یافت شد، از یکی از این فرمول ها استفاده کنید:
=IF(OR(ISNUMBER(SEARCH("aa", A2)), ISNUMBER(SEARCH("bb", A2))), "Yes", "")
یا
=IF(OR(COUNTIF(A2, "*aa*"), COUNTIF(A2, "*bb*")), "Yes", "")
افزودن دو تابع COUNTIF نیز کار خواهد کرد. در این مورد، علامت مثبت مانند عملگر OR عمل می کند:
=IF(COUNTIF(A3, "*aa*") + COUNTIF(A3, "*bb*"), "Yes", "")
به جای رشته های حروف عام در فرمول، می توانید آنها را در سلول های جداگانه مانند D2 و F2 وارد کنید، همانطور که نشان داده شده است. در تصویر زیر لطفا توجه کنید که اینهامراجع سلول با علامت $ قفل می شوند تا فرمول به درستی در سلول های زیر کپی شود:
=IF(OR(COUNTIF(A2, "*"&$D$2&"*"), COUNTIF(A2, "*"&$F$2&"*")), "Yes", "")
فرمول های بالا برای 2 مطابقت جزئی به خوبی کار می کنند. ، اما اگر به دنبال 3 یا بیشتر هستید، آنها خیلی طولانی خواهند شد. در این مورد، منطقی است که به روش متفاوتی به کار نزدیک شویم:
چند رشته زیر رشته ای را به تابع SEARCH در یک آرایه ثابت ارائه دهید، اعداد برگشتی را بشمارید، و بررسی کنید که آیا نتیجه بزرگتر از صفر است (که به این معنی است که حداقل یکی از زیر رشته ها در صورت یافتن):
=IF(COUNT(SEARCH({"aa","bb"}, A2))>0, "Yes", "")
به این ترتیب، دقیقاً همان نتیجه را با فرمول فشرده تر دریافت خواهید کرد:
فرمول Excel IF و با حروف عام
وقتی می خواهید بررسی کنید که یک سلول دارای دو یا چند رشته فرعی متفاوت است یا خیر، ساده ترین راه استفاده از تابع COUNTIFS با حروف عام برای تست منطقی است.
فرض کنید میخواهید سلولهایی را در ستون A پیدا کنید که حاوی «b» و «2» هستند. برای انجام این کار، از "*b*" و "*2*" برای معیارهای COUNTIFS و از A2 برای محدوده معیار استفاده کنید:
=IF(COUNTIFS(A2, "*b*", A2, "*2*"), "Yes", "")
یک راه دیگر استفاده از فرمول IF و با هم است. با ISNUMBER SEARCH:
=IF(AND(ISNUMBER(SEARCH("b", A2)), ISNUMBER(SEARCH("2", A2))), "Yes", "")
اگرچه ما هیچ کاراکتر عام را در این فرمول لحاظ نمی کنیم، مانند جستجوی دو رشته عام ("*b*" و "*2*" است. ) در همان سلول.
البته، هیچ چیز مانع شما نمی شود که مقادیر جستجو را در سلول های از پیش تعریف شده، در مورد ما D2 و F2 وارد کنید و آن را تامین کنید.سلول ها به فرمول ارجاع می دهند:
=IF(AND(ISNUMBER(SEARCH($D$2, A2)), ISNUMBER(SEARCH($F$2, A2))), "Yes", "")
اگر ترجیح می دهید تا جایی که ممکن است از فرمول های فشرده تر استفاده کنید، ممکن است رویکرد ثابت آرایه را بهتر بپسندید. فرمول IF COUNT SEARCH بسیار شبیه مثال قبلی است، اما چون این بار هر دو زیر رشته باید در A2 ظاهر شوند، بررسی می کنیم که آیا تعداد آن برابر با 2 است:
=IF(COUNT(SEARCH({"b","2"}, A2))=2, "Yes", "")
اینها روشهای اصلی استفاده از wildcard در دستور IF در اکسل هستند. اگر راه حل دیگری می دانید، مطمئناً سایر کاربران اگر تجربه خود را در نظرات به اشتراک بگذارید قدردانی خواهند کرد. از خواندن شما سپاسگزارم و امیدوارم هفته آینده شما را در وبلاگ خود ببینیم!
کتاب کار را برای دانلود تمرین کنید
نمونههای فرمول حروف عام Excel IF (فایل xlsx.)