حسابداری و امور مالی بیمارستانبخشنامه، تعرفه و محاسبات حقوق
جست‌وجوخبرنامه
آموزش اکسل

رفع خطای پنهان ویلوکاپ در اکسل ناشی از فاصله نامرئی یا عدد ذخیره شده به عنوان متن

زمان مطالعه: ۴ دقیقه۲۸ بازدید

این چالش VLOOKUP از نوع رایج کیبورد عربی/فارسی یا ستون اشتباه و آرگومان چهارم نیست؛ این یکی «مخفی» است چون هیچ راهی برای دیدنش با چشم وجود ندارد. کد پرسنلی یا کد خدمت را در سلول جستجو می نویسید، دقیقا همان چیزی که در گزارش کارگزینی می بینید؛ ستون جستجو هم سمت راست ترین ستون جدول است؛ آرگومان چهارم هم FALSE است؛ با این حال VLOOKUP باز هم #N/A می دهد.

علت؛ یک کاراکتر نامرئی که چشم نمی بیند

وقتی داده از یک نرم افزار کارگزینی، یک فایل PDF، یا یک سامانه دیگر در اکسل کپی و پیست می شود، گاهی یک فاصله (Space) اضافه در ابتدا یا انتهای متن همراه آن می آید؛ اکسل این فاصله را بخشی از متن سلول حساب می کند، اما روی صفحه، در حالت عادی، هیچ نشانه ای از آن دیده نمی شود. کد پرسنلی «۱۰۲۶» با یک فاصله اضافه در انتها، برای چشم دقیقا همان «۱۰۲۶» است؛ اما برای اکسل، دو رشته متنی کاملا متفاوت با طول متفاوتند.

نمونه واقعی از یک لیست کارانه

لیست زیر از کارگزینی دریافت شده؛ کد پرسنلی به صورت متن ذخیره شده و دو ردیف آن، بدون اینکه در ظاهر مشخص باشد، یک فاصله اضافه در انتهای کد دارند:

کد پرسنلی با فاصله نامرئی در انتها در منبع کارگزینی، ظاهرا شبیه بقیه کدها در اکسل
کد ۱۰۲۶ و ۱۰۲۸ یک فاصله اضافه پنهان در انتهای متن دارند؛ در نگاه اول هیچ فرقی با بقیه ندارند

حالا همین کدها را با تایپ تمیز و بدون فاصله اضافه، در یک VLOOKUP با تطابق دقیق جستجو می کنیم:

خطای پیدا نشدن نتیجه VLOOKUP کارانه به دلیل فاصله نامرئی پنهان در کد پرسنلی در اکسل
با اینکه کد جستجو کاملا درست تایپ شده، دو ردیف باز هم #N/A می گیرند

دقیقا همین چالش برای اعداد ذخیره شده به عنوان متن هم پیش می آید؛ اگر کد پرسنلی یا کد خدمت در یک ستون به صورت عدد و در ستون دیگر (مثلا بعد از کپی از یک نرم افزار حسابداری) به صورت متن ذخیره شده باشد، VLOOKUP باز هم آن دو را یکی نمی داند، حتی اگر رقم های نمایش داده شده کاملا یکسان باشند.

تشخیص قطعی با LEN و CODE

به جای حدس زدن، طول واقعی متن را با =LEN(سلول) اندازه بگیرید. کد پرسنلی چهار رقمی باید دقیقا LEN برابر ۴ داشته باشد؛ اگر LEN عدد ۵ برگرداند، یعنی یک کاراکتر اضافه (معمولا فاصله) در متن پنهان است. برای تایید قطعی، تابع =CODE(RIGHT(سلول,1)) کد کاراکتر آخر را نشان می دهد؛ کد 32 همیشه یعنی فاصله (Space).

تشخیص فاصله نامرئی با توابع LEN و CODE و اصلاح آن با فرمول TRIM در اکسل
LEN طول واقعی متن و CODE کد کاراکتر آخر را نشان می دهند؛ هر دو فاصله پنهان را افشا می کنند

راه حل؛ ستون کمکی با TRIM

فرمول =TRIM(A2) تمام فاصله های اضافه در ابتدا و انتهای متن (و فاصله های دوتایی وسط متن) را حذف می کند. یک ستون کمکی کنار کد پرسنلی اصلی اضافه کنید، TRIM را روی آن اجرا کنید، و VLOOKUP یا INDEX/MATCH را به جای ستون خام، روی همین ستون نرمال شده اجرا کنید؛ داده اصلی کارگزینی دست نخورده باقی می ماند.

اگر مشکل از عدد ذخیره شده به عنوان متن باشد (نه فاصله اضافه)، راه حل فرمول =VALUE(سلول) یا ضرب سلول در عدد ۱ (=A2*1) است؛ هر دو متن را به عدد واقعی تبدیل می کنند تا با ستون دیگر قابل تطبیق شود.

نکات کاربردی

  • اگر VLOOKUP روی کدی که با چشم کاملا درست به نظر می رسد #N/A داد، همیشه اول LEN آن را با تعداد رقم های واقعی مقایسه کنید.
  • فاصله نامرئی معمولا از کپی و پیست داده از یک نرم افزار دیگر، یک فایل PDF، یا حتی یک صفحه وب می آید؛ داده تایپ شده مستقیم در اکسل معمولا این مشکل را ندارد.
  • به جای اصلاح دستی تک تک سلول ها، ستون کمکی TRIM یا CLEAN(TRIM(سلول)) را برای کل ستون یک بار اجرا کنید تا هم فاصله اضافه و هم کاراکترهای غیرچاپی حذف شوند.
  • بعد از افزودن ستون کمکی، نتیجه VLOOKUP را حتما با یک کد که پاسخش را از قبل می دانید (مثل کد ۱۰۲۶ در نمونه بالا) تست کنید تا مطمئن شوید اصلاح واقعا جواب داده است.

📄 دانلود فایل اکسل نمونه «چالش مخفی VLOOKUP» — شامل لیست کارانه نمونه با کد پرسنلی دارای فاصله نامرئی، نتیجه VLOOKUP قبل از اصلاح، برگه تشخیص با LEN و CODE، و برگه نهایی با ستون کمکی TRIM و VLOOKUP اصلاح شده، برای تمرین گام به گام.

منبع : سایت حسابداری بیمارستان
کانال تلگرام @hospitalaccounting

نظر شما

نظر شما پس از بررسی منتشر می‌شود. ایمیل‌تان هرگز روی سایت نمایش داده نمی‌شود.