پر کردن فرم ها با داده های جدول

فرمول بندی مسئله

ما یک پایگاه داده داریم (فهرست، جدول - آن را هر چه می خواهید نامید) با اطلاعات مربوط به پرداخت ها در یک برگه داده ها:

کار: به سرعت یک رسید نقدی (پرداخت، فاکتور ...) را برای هر ورودی دلخواه انتخاب شده از این لیست چاپ کنید. برو!

مرحله 1. یک فرم ایجاد کنید

در برگه دیگری از کتاب (بیایید این برگه را بنامیم فرم) یک فرم خالی ایجاد کنید. شما می توانید این کار را خودتان انجام دهید، می توانید از فرم های آماده استفاده کنید، به عنوان مثال، از وب سایت های مجله ارشد حسابدار یا وب سایت مایکروسافت گرفته شده است. من چیزی شبیه این گرفتم:

پر کردن فرم ها با داده های جدول

در سلول های خالی (حساب، مبلغ، دریافت شده از و غیره) داده ها را از جدول پرداخت از برگه دیگری دریافت می کند - کمی بعد به این موضوع خواهیم پرداخت.

مرحله 2: آماده سازی جدول پرداخت

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

مرحله 3. پیوند جدول و فرم

برای ارتباط از تابع استفاده می کنیم VPR(VLOOKUP) - در اینجا شما میتوانید اطلاعات بیشتری راجع به آن بخوانید. در مورد ما، برای درج شماره پرداخت با علامت "x" از صفحه داده در سلول F9 در فرم، باید فرمول زیر را در سلول F9 وارد کنید:

=VLOOKUP("x",Data!A2:G16)

=VLOOKUP("x";داده!B2:G16;2;0)

آن ها تابع باید در محدوده A2: G16 در برگه داده خطی را پیدا کند که با کاراکتر "x" شروع می شود و محتوای ستون دوم این خط، یعنی شماره پرداخت را به ما بدهد.

تمام سلول های دیگر در فرم به همین ترتیب پر می شوند - فقط شماره ستون در فرمول تغییر می کند.

برای نمایش مقدار به صورت کلمات از تابع استفاده کردم خود از افزونه PLEX.

نتیجه باید به صورت زیر باشد:

پر کردن فرم ها با داده های جدول

مرحله 4. به طوری که هیچ دو "x" وجود ندارد…

اگر کاربر "x" را در مقابل چندین خط وارد کند، تابع VLOOKUP فقط اولین مقداری را که پیدا می کند را می گیرد. برای جلوگیری از چنین ابهامی، روی برگه برگه کلیک راست کنید داده ها و پس از آن متن منبع (کد منبع). در پنجره ویرایشگر ویژوال بیسیک که ظاهر می شود، کد زیر را کپی کنید:

Private Sub Worksheet_Change(ByVal Target As Range) Dim r به اندازه رشته کم نور به عنوان رشته If Target.Count > 1 سپس از Sub If Target.Column = 1 خارج شوید سپس str = Target.Value Application.EnableEvents = False r = Cells (Rows.Count) , 2).End(xlUp).Row Range("A2:A" & r).ClearContents Target.Value = str End If Application.EnableEvents = True End Sub  

این ماکرو از وارد کردن بیش از یک "x" در ستون اول توسط کاربر جلوگیری می کند.

خب، همین! لذت بردن!

  • استفاده از تابع VLOOKUP برای جایگزینی مقادیر
  • یک نسخه بهبود یافته از عملکرد VLOOKUP
  • مقدار به کلمات (عملکرد Propis) از افزونه PLEX

 

پاسخ دهید