نمایش نتایج: از شماره 1 تا 10 , از مجموع 10

موضوع: آموزش ایجاد دیتا ولیدیشن با قابلیت سورت اطلاعات و افزودن دیتا از طریق دیتا ولیدیشن

  1. #1
    mokaram آنلاین نیست.
    مدير تالار اکسل و بانک اطلاعاتی


    محصولات کاربر

    ويدئوي ايجاد سطح دسترسي
    آخرین بازدید
    2023/04/20
    تاریخ عضویت
    February 2011
    محل سکونت
    ســــاوه
    نوشته ها
    1,805
    امتیاز
    6409
    سپاس
    8,099
    سپاس شده
    5,163 در 1,502 پست
    سطح اکسل
    74.00 %

    mokaram به Yahoo ارسال پیام

    Smiley آموزش ایجاد دیتا ولیدیشن با قابلیت سورت اطلاعات و افزودن دیتا از طریق دیتا ولیدیشن

    با سلام
    همونطور که می دونید یکی از راههای ایجاد دیتا ولیدیشن استفاده از لیست هست به طوری که اطلاعات لیست داخل دیتا ولیدیشن میاد. از ترتیب خاصی پیروی نمیکنه و برای افزودن اطلاعات به دیتا ولیدیشن ابتدا باید محدود لیست ما تغییر بکنه و بعد اون تغییرات در دیتا ولیدیشن بیاد
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام:  1.jpg
مشاهده: 33
حجم:  28.2 کیلو بایت
    اما در این آموزش قصد داریم که اطلاعات جدید را بشه از طریق خود دیتا ولیدیشن وارد لیست کرد و هم چنین اطلاعات بر اساس حروف الفبا مرتب بشن پس با ما همراه باشید
    ابتدا دو تا شیت به نام های Data و List ایجاد می کنیم در شیت List در ستون B شروع به وارد کردن اطلاعات مورد نظر می کنیم و برای نامگذاری این محدوده ( ستون B) به صورت داینامیک به شکل زیر عمل می کنیم:
    Formulas> Defined Names > name Manger
    سپس new را زده و نام مورد نظر را در قسمت name می نویسیم. در قسمت Refer to فرمول زیر را درج می کنیم
    کد PHP:
    =OFFSET(List!$B$1,0,0,COUNTA(List!$B:$B),1
    برای آگاهی از عمکرد تابع Offset به لینک زیر مراجعه کنید
    http://forum.exceliran.com/showthread.php?t=2704
    به شیت Data رفته و برای مثال در خانه B2 قرار گرفته و مانند تصویر بالا سورس city را از طریق گزینه List ایجاد می کنیم
    نکته : برای اینکه بتوانیم اطلاعات را از طریق دیتا ولیدیشن وارد سورس اصلی بکنیم مانند تصویر زیر عمل نمایید
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام:  2.jpg
مشاهده: 41
حجم:  27.3 کیلو بایت

    حال نوبت به کدنویسی در محیط VBA میرسد بر روی شیت List راست کلیک کرده و گزینه View Code را انتخاب می کنیم و در ایونت ورک شیت کد زیر را می نویسیم:
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام:  3.jpg
مشاهده: 21
حجم:  10.8 کیلو بایت
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام:  4.jpg
مشاهده: 18
حجم:  16.3 کیلو بایت

    کد PHP:
    Private Sub Worksheet_Change(ByVal Target As Range)
        
    Columns(Target.Column).Sort _
            Key1
    :=Cells(1Target.Column), _
            Order1
    :=xlAscending_
            Header
    :=xlNo_
            OrderCustom
    :=1_
            MatchCase
    :=False_
            Orientation
    :=xlTopToBottom
    End Sub 
    از تب دولوپر ایتم کمبو باکس را از قسمت ActiveX Control برمی گزینیم و بر روی یکی از سلولهایی که دیتا ولیدیشین بر روی آن تعریف شده می کشیم
    هم چنین کدهای زیر را نیز در ایونت ورک شیت Data وارد می کنیم:
    کد PHP:
    Option Explicit



    Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    Dim ws 
    As Worksheet
    Dim str 
    As String
    Dim i 
    As Integer
    Dim rngDV 
    As Range
    Dim rng 
    As Range
    Dim strMsg 
    As String
    Dim lRsp 
    As Long
    strMsg 
    "Add this item to the list?"

    If Target.Count 1 Then Exit Sub
    Set ws 
    Worksheets("List")
      
    If 
    Target.Row 1 Then
      On Error Resume Next
      Set rngDV 
    Cells.SpecialCells(xlCellTypeAllValidation)
      
    On Error GoTo 0
      
    If rngDV Is Nothing Then Exit Sub
      
      
    If Intersect(TargetrngDVIs Nothing Then Exit Sub
      
    If Target "" Then Exit Sub
        
      str 
    Target.Validation.Formula1
      str 
    Right(strLen(str) - 1)
      
    On Error Resume Next
      Set rng 
    ws.Range(str)
      
    On Error GoTo 0
      
    If rng Is Nothing Then Exit Sub
      
      
    If Application.WorksheetFunction _
        
    .CountIf(rngTarget.ValueThen
        
    Exit Sub
      
    Else
       
    lRsp MsgBox(strMsgvbQuestion vbYesNo"Add New Item?")
       If 
    lRsp vbYes Then
        i 
    ws.Cells(Rows.Countrng.Column).End(xlUp).Row 1
        ws
    .Cells(irng.Column).Value Target.Value
        rng
    .Sort Key1:=ws.Cells(1rng.Column), _
          Order1
    :=xlAscendingHeader:=xlNo_
          OrderCustom
    :=1MatchCase:=False_
          Orientation
    :=xlTopToBottom
        End 
    If
      
    End If

    End If

    End Sub

    Private Sub TempCombo_KeyDown(ByVal _
            KeyCode 
    As MSForms.ReturnInteger_
            ByVal Shift 
    As Integer)
            
    On Error Resume Next
    Dim ws 
    As Worksheet
    Dim str 
    As String
    Dim i 
    As Integer
    Dim rngDV 
    As Range
    Dim rng 
    As Range
    Dim strMsg 
    As String
    Dim lRsp 
    As Long
    Dim c 
    As Range
    strMsg 
    "Add this item to the list?"

    Set ws Worksheets("List")
    Set c ActiveCell
        
      str 
    c.Validation.Formula1
      str 
    Right(strLen(str) - 1)
      
    On Error Resume Next
      Set rng 
    ws.Range(str)
      
    On Error GoTo 0
      
    If rng Is Nothing Then Exit Sub
            
        
    'Hide combo box and move to next cell on Enter and Tab
        Select Case KeyCode
            Case 9
                c.Offset(0, 1).Activate
                  If c.Value = "" Then Exit Sub

                  If Application.WorksheetFunction _
                      .CountIf(rng, c.Value) Then
                      Exit Sub
                    Else
                     lRsp = MsgBox(strMsg, vbQuestion + vbYesNo, "Add New Item?")
                     If lRsp = vbYes Then
                      i = ws.Cells(Rows.Count, rng.Column).End(xlUp).Row + 1
                      ws.Cells(i, rng.Column).Value = c.Value
                      rng.Sort Key1:=ws.Cells(1, rng.Column), _
                        Order1:=xlAscending, Header:=xlNo, _
                        OrderCustom:=1, MatchCase:=False, _
                        Orientation:=xlTopToBottom
                      End If
                    End If

            Case 13
                c.Offset(1, 0).Activate
                  If c.Value = "" Then Exit Sub
                  If Application.WorksheetFunction _
                      .CountIf(rng, c.Value) Then
                      Exit Sub
                    Else
                     lRsp = MsgBox(strMsg, vbQuestion + vbYesNo, "Add New Item?")
                     If lRsp = vbYes Then
                      i = ws.Cells(Rows.Count, rng.Column).End(xlUp).Row + 1
                      ws.Cells(i, rng.Column).Value = c.Value
                      rng.Sort Key1:=ws.Cells(1, rng.Column), _
                        Order1:=xlAscending, Header:=xlNo, _
                        OrderCustom:=1, MatchCase:=False, _
                        Orientation:=xlTopToBottom
                      End If
                    End If
            Case Else
                '
    do nothing
        End Select

    End Sub

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim str As String
    Dim cboTemp 
    As OLEObject
    Dim ws 
    As Worksheet
    Dim wsList 
    As Worksheet
    Dim rng 
    As Range
    Dim i 
    As Integer
    Dim strMsg 
    As String
    Dim lRsp 
    As Long
    Set ws 
    ActiveSheet
    Set wsList 
    Sheets("List")
    Set cboTemp ws.OLEObjects("TempCombo")
    strMsg "Add this item to the list?"

    If Target.Count 1 Then GoTo exitHandler

      On Error Resume Next
      With cboTemp
        
    .ListFillRange ""
        
    .LinkedCell ""
        
    .Visible False
      End With
    On Error 
    GoTo errHandler
      
    If Target.Validation.Type 3 Then
        Application
    .EnableEvents False
        str 
    Target.Validation.Formula1
        str 
    Right(strLen(str) - 1)
        
    With cboTemp
          
    .Visible True
          
    .Left Target.Left
          
    .Top Target.Top
          
    .Width Target.Width 15
          
    .Height Target.Height 5
          
    .ListFillRange str
          
    .LinkedCell Target.Address
        End With
        
        cboTemp
    .Activate
      End 
    If
      
    exitHandler:
      
    Application.EnableEvents True
      Application
    .ScreenUpdating True
      
    Exit Sub
    errHandler
    :
      
    Resume exitHandler

    End Sub 
    امیدوارم مورد توجهتون قرار گرفته باشه
    اخطار: این یک موضوع قدیمی است
    به دلیل قدیمی بودن موضوع، ممکن است برخی فایل های ضمیمه به درستی کار نکنند. لطفا در صورت عدم ضرورت، از بالا آوردن موضوعات قدیمی خودداری نمایید.
    فايل هاي پيوست شده فايل هاي پيوست شده
    ویرایش توسط mokaram : 2014/05/31 در ساعت 11:45 دلیل:کامل شدن مطلب



  2.  

  3. #2


    آخرین بازدید
    2023/04/24
    تاریخ عضویت
    April 2014
    محل سکونت
    كرج
    نوشته ها
    892
    امتیاز
    4526
    سپاس
    2,297
    سپاس شده
    2,910 در 801 پست
    سطح اکسل
    64.00 %

    سلام
    دستت درد نكنه ، ولي من هر چي فكر كردم اين به چه دردي ، بجز يه تمرين براي كد نويسي ميخوره .
    چون مميزي ليست رو از بين ميبره و شما هر چي بخوايد تو سلها مينويسيد و اگر غرض راحتتر كردن تايپ با ليست كردن نوشته هاي قبلي باشه ، خوب ميتونن با زدن كليد( Alt + كليد جهت پايين ) ، همين ليست باز ميشه .
    تشكر

  4. سپاس ها (1)


  5. #3


    آخرین بازدید
    2023/03/08
    تاریخ عضویت
    May 2013
    نوشته ها
    56
    امتیاز
    154
    سپاس
    4
    سپاس شده
    153 در 39 پست
    سطح اکسل
    82.00 %

    با سلام
    ممنون از مطلب جالبتون
    بنظر من راه ساده تری هم بغیر از برنامه نویسی هس.
    داده هامون رو بصورت format as table در بیاریم
    از طریق تابع cell و زیربخش address و با ترکیب تابع counta، آدرس محدوده ای که توش داده وجود داره رو توی یک سلول بنویسیم.
    اون وقت توی data validation به کمک تابع indirect لیست رو ازون محدوده بگیریم
    (دلیل table کردن اینه که لیست بطور اتومات بروز بشه)


  6. #4


    آخرین بازدید
    2022/06/26
    تاریخ عضویت
    January 2013
    محل سکونت
    شیراز
    نوشته ها
    1,198
    امتیاز
    3248
    سپاس
    1,566
    سپاس شده
    3,182 در 795 پست
    سطح اکسل
    84.00 %

    با درود
    خب بریم سر قضیه جناب میثم خان گل - اینکه Alt+Down key رو بزنیم که فقط تا اونجایی که من ذهنم یاری میده جایی هستش که اطلاعات زیر یه ستون باشن . یعنی نمیشه این کلید رو برای یه ستون تو یه شیت دیگه به کار برد و اگر میشه م بلد نیستم . مرتب کردن بر اساس حروف الفبا هم که که نمیشه کتمانش کرد خیلی جا ها حتی تو فرمول نویسیا بدردمون میخوره در کل کار با داده های سورت شده خیلی اسونتره ( یه نمونش Datavalidation های وابسته به هم هستش که حالا به وقتش یه نمونه از سورت شدن ستون رو که مهمه با هم برسی میکنیم ) - دیتا ولیدیشنی که خاصیت پویا داشته باشه رو هیچ کس نمیتونه کتمانش کنه و همچنین اگر خاصیت یونیک شدن بهش اظافه شه . یه سری ما اشتباهات تایپی تو فرمول نویسی ها میکنیم که راحت رفع میشه با این مورد نمونه بارزش همون ی و ک ............. که میدونم اونم راه داره اما خب بلاخره هست دیگه
    در پناه خداوندگار ایران زمین باشید و پیروز


  7. #5


    آخرین بازدید
    یک ساعت پیش
    تاریخ عضویت
    September 2013
    محل سکونت
    بچه محل آقا امام رضا
    نوشته ها
    4,472
    امتیاز
    12316
    سپاس
    8,923
    سپاس شده
    10,587 در 3,746 پست
    سطح اکسل
    100.00 %

    نقل قول نوشته اصلی توسط M_R_M نمایش پست ها
    به شیت Data رفته و برای مثال در خانه B2 قرار گرفته و مانند تصویر بالا سورس city را از طریق گزینه List ایجاد می کنیم
    نکته : برای اینکه بتوانیم اطلاعات را از طریق دیتا ولیدیشن وارد سورس اصلی بکنیم مانند تصویر زیر عمل نمایید
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام:  2.jpg
مشاهده: 41
حجم:  27.3 کیلو بایت




    هم چنین کدهای زیر را نیز در ایونت ورک شیت Data وارد می کنیم:
    کد PHP:
    Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    Dim ws 
    As Worksheet
    Dim str 
    As String
    Dim i 
    As Integer
    Dim rngDV 
    As Range
    Dim rng 
    As Range

    If Target.Count 1 Then Exit Sub
    Set ws 
    Worksheets("List")
      
    If 
    Target.Row 1 Then
      On Error Resume Next
      Set rngDV 
    Cells.SpecialCells(xlCellTypeAllValidation)
      
    On Error GoTo 0
      
    If rngDV Is Nothing Then Exit Sub
      
      
    If Intersect(TargetrngDVIs Nothing Then Exit Sub
        
      str 
    Target.Validation.Formula1
      str 
    Right(strLen(str) - 1)
      
    On Error Resume Next
      Set rng 
    ws.Range(str)
      
    On Error GoTo 0
      
    If rng Is Nothing Then Exit Sub
      
      
    If Application.WorksheetFunction _
        
    .CountIf(rngTarget.ValueThen
        
    Exit Sub
      
    Else
        
    ws.Cells(Rows.Countrng.Column).End(xlUp).Row 1
        ws
    .Cells(irng.Column).Value Target.Value
        rng
    .Sort Key1:=ws.Cells(1rng.Column), _
          Order1
    :=xlAscendingHeader:=xlNo_
          OrderCustom
    :=1MatchCase:=False_
          Orientation
    :=xlTopToBottom
      End 
    If

    End If

    End Sub 
    امیدوارم مورد توجهتون قرار گرفته باشه
    ممنون عزيز. ولي من اين دو قسمت رو متوجه نشدم.
    مخصوصا كدي كه تو شيت data نوشتي. كارش چيه؟

  8. سپاس ها (3)


  9. #6


    آخرین بازدید
    2023/04/24
    تاریخ عضویت
    April 2014
    محل سکونت
    كرج
    نوشته ها
    892
    امتیاز
    4526
    سپاس
    2,297
    سپاس شده
    2,910 در 801 پست
    سطح اکسل
    64.00 %

    نقل قول نوشته اصلی توسط امين اسماعيلي نمایش پست ها
    با درود
    خب بریم سر قضیه جناب میثم خان گل - اینکه Alt+Down key رو بزنیم که فقط تا اونجایی که من ذهنم یاری میده جایی هستش که اطلاعات زیر یه ستون باشن . یعنی نمیشه این کلید رو برای یه ستون تو یه شیت دیگه به کار برد و اگر میشه م بلد نیستم . مرتب کردن بر اساس حروف الفبا هم که که نمیشه کتمانش کرد خیلی جا ها حتی تو فرمول نویسیا بدردمون میخوره در کل کار با داده های سورت شده خیلی اسونتره ( یه نمونش Datavalidation های وابسته به هم هستش که حالا به وقتش یه نمونه از سورت شدن ستون رو که مهمه با هم برسی میکنیم ) - دیتا ولیدیشنی که خاصیت پویا داشته باشه رو هیچ کس نمیتونه کتمانش کنه و همچنین اگر خاصیت یونیک شدن بهش اظافه شه . یه سری ما اشتباهات تایپی تو فرمول نویسی ها میکنیم که راحت رفع میشه با این مورد نمونه بارزش همون ی و ک ............. که میدونم اونم راه داره اما خب بلاخره هست دیگه
    بله درسته ، سورت شدنش خيلي خوبه كه به اين دقت نكرده بودم .
    نكته هاي Datavalidation های وابسته رو هم يه قصه شب براش بزاري زودتر خيلي خوبه .
    شبا ديگه قصه نميگي ، منم مجبورم برم ساعت 10 لالايي شبكه پويارو نگاه كنم تا خوابم ببره


  10. #7


    آخرین بازدید
    2022/06/26
    تاریخ عضویت
    January 2013
    محل سکونت
    شیراز
    نوشته ها
    1,198
    امتیاز
    3248
    سپاس
    1,566
    سپاس شده
    3,182 در 795 پست
    سطح اکسل
    84.00 %

    با درود
    چشم حتما - یه داستان خوب میزارم تو این زمیته
    در پناه خداوندگار ایران زمین باشید و پیروز


  11. #8


    آخرین بازدید
    یک ساعت پیش
    تاریخ عضویت
    September 2013
    محل سکونت
    بچه محل آقا امام رضا
    نوشته ها
    4,472
    امتیاز
    12316
    سپاس
    8,923
    سپاس شده
    10,587 در 3,746 پست
    سطح اکسل
    100.00 %

    نقل قول نوشته اصلی توسط امين اسماعيلي نمایش پست ها
    با درود
    چشم حتما - یه داستان خوب میزارم تو این زمیته
    بي زحمت داستانش عشقولانه باشه. دوست دارم از اينا


  12. #9
    mokaram آنلاین نیست.
    مدير تالار اکسل و بانک اطلاعاتی


    محصولات کاربر

    ويدئوي ايجاد سطح دسترسي
    آخرین بازدید
    2023/04/20
    تاریخ عضویت
    February 2011
    محل سکونت
    ســــاوه
    نوشته ها
    1,805
    امتیاز
    6409
    سپاس
    8,099
    سپاس شده
    5,163 در 1,502 پست
    سطح اکسل
    74.00 %

    mokaram به Yahoo ارسال پیام
    پست اول آپدیت شد (کدهای شیت Data کاملتر شد )



  13. #10


    آخرین بازدید
    تاریخ عضویت
    January 2014
    نوشته ها
    172
    امتیاز
    202
    سپاس
    41
    سپاس شده
    78 در 46 پست
    تعیین سطح نشده است

    افرین سپاس از استید بزرگوار،هرچی بیشترمیخونم احساس میکنم خیلی بی سوادترینم


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. افزونه مدیریت دیتابیس در اکسل
    توسط ~M*E*H*D*I~ در انجمن برنامه های کاربردی اکسل
    پاسخ ها: 0
    آخرين نوشته: 2014/03/10, 21:34
  2. آموزشی ساخت دیتا تیبل با قابلیت اسکرول
    توسط Nima در انجمن ترفندهای اکسل Excel Tricks
    پاسخ ها: 0
    آخرين نوشته: 2013/12/08, 13:28
  3. کمک در آموزش دیتا بیس
    توسط saro1356 در انجمن پیوت تیبل و پايگاه داده - Pivot Table and Database
    پاسخ ها: 19
    آخرين نوشته: 2012/09/02, 10:32
  4. ثبت همزمان دیتا در دو شیت مجزا
    توسط alishabanipour در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 1
    آخرين نوشته: 2012/03/24, 01:17

بازدید کنندگان با جستجو های زیر این صفحه را پیدا کرده اند

سورت site:exceliran.com

ولیدیشن

آموزش کار با لیست دیتا ولیدیشن

وليديشن

کلمات کلیدی این موضوع

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
  • BB code ها فعال هستند
  • شکلک ها فعال هستند
  • کد [IMG] فعال است
  • کد [VIDEO] فعال است
  • کد HTML غیر فعال است