ماتریس متقارن

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • generalsamad
    مدير تالار توابع

    • 2014/06/22
    • 1496

    ماتریس متقارن

    با سلام
    با ترکیب این دو فرمول میتوان یک ماتریس متقارن ساخت
    اول داده های قطر بالا مثلثی را وارد میکنیم سپس برای قطر پائین مثلثی از این فرمول استفاده میکنیم
    دقت کنید برای این فرمول باید اولین خانه ماتریس جائی از شیت قرار بگیره که شماره سطر و ستون یکی باشند
    بطور مثال اگه بخواهیم اولین خانه ماتریس در سطر 1 ایجاد کنیم شماره ستون هم باید 1 باشه که در کل آدرسش میشه a1
    اگه بخواهیم اولین خانه ماتریس در سطر 1 ایجاد کنیم شماره ستون هم باید 1 باشه که در کل آدرسش میشه b2
    اگه بخواهیم اولین خانه ماتریس در سطر 1 ایجاد کنیم شماره ستون هم باید 1 باشه که در کل آدرسش میشه c3

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

    اینم فرمول
    کد PHP:
    =indirect(address(column();row())) 
    کافیه این فرمول رو برای کل قطر پائینی نوشت
    در مورد توضیح کد بالا تنها نکته ای که داره اینه آرگومان اول فرمول آدرس مربوط به سطر هست که من توی فرمول شماره ستون رو نوشتم و آرگومان دوم شماره ستون هست که شماره سطر رو نوشتم
    این عمل کار تقارن رو انجام میده

    فایل ضمیمه گردید

    از دوستانی که Vba کار میکنند اگه زحمت کد نویسیش رو انجام بدید و توی همین پست قرار بدید ممنون میشم
    کد طوری باشه که کاربر فقط قطر بالا مثلثی رو وارد کنه که نیازی نباشه فرمول نویسی رو انجام بده
    شاید بعد ماتریس هم تغییر پیدا کنه این هم مد نظر باشه

    با تشکر
    فایل های پیوست شده
    Last edited by generalsamad; 2015/05/06, 01:34.
    [CENTER]
    [SIGPIC][/SIGPIC]
    [/CENTER]
  • abootorab

    • 2014/10/17
    • 351

    #2
    با درود
    ضمن تشکر از جناب آقای generalsamad در تکمیل آموزش و بنا به در خواست ایشان کدنویسی vba ماتریس متقارن به همراه فایل نمونه تقدیم دوستان میگردد. امیدوارم برای دوستان مفید واقع شود.

    توضیح عمکرد کد:
    جهت ایجاد یک ماتریس متقارن کافیه در یکی از سلولها دوبارکلیک کنید، پس از آن از شما پرسیده میشود طول قطر ماتریس چه تعداد باشد که با وارد کردن طول قطر، ماتریس متقارن خالی به ابعاد مورد نظر تولید میشود. سپس شما در هر سلول از این ماتریس که مقداری وارد کنید در سلول متقارن آن، مقدار مربوطه ایجاد خواهد شد ضمن اینکه محدودیتی در وارد کردن کدام سمت مثلثی ماتریس ندارید، یعنی در هرسمت که مقدار وارد شد در سمت متقارن مثلث مقدار شما ایجاد میشود.
    همچنین با دوبارکلیک مجدد در یک سلول شما می توانید ماتریس قبلی را کاملا حذف و ماتریس جدید با ابعاد دلخواه ایجاد کنید و در صورتیکه بخواهید بدون ایجاد ماتریس جدید ماتریس قبلی را حذف کنید پس از دوبارکلیلک در یک سلول و ظاهر شدن پرسش طول قطر ماتریس، مقدار صفر را وارد و اینتر کنید.

    البته دوستان بسته به نیاز خود می توانند کد زیر را تغییر و استفاده کنند.
    کد PHP:
    Public Src As RangeMtx As Range

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As RangeCancel As Boolean)
        
    On Error Resume Next
        Dim Vtr 
    As Integer
        p1 
    "Please enter the dimension of Matrix:"
        
    p2 "(Enter '0' to erase Matrix)"
        
    p1 Chr(13) + Chr(13) + p2
        t 
    "Enter Dimension"
        
    ib InputBox(pt7)
        
        If 
    ib "" Then Exit Sub Else Vtr Val(ib)
        If 
    Vtr And Vtr <> 0 Then
            MsgBox 
    "Dimension of Matrix Not less than 2!"vbExclamation"Error"
            
    Cancel True
            
    Exit Sub
        End 
    If
        
        If 
    Not Mtx Is Nothing Then
            Mtx
    .Clear
            
    If Vtr 0 Then Cancel True: Exit Sub
        End 
    If
        
        
    Set Mtx Range(Target.Address ":" Target.Offset(Vtr 1Vtr 1).Address)
        
    Set Src Target
        
        Application
    .EnableEvents False
        Application
    .ScreenUpdating False
        Mtx
    .Clear
        
        
    For Src.Row To Src.Row Mtx.Rows.Count 1
            
    For Src.Column To Src.Column Mtx.Columns.Count 1
                
    If Src.Row Src.Column Then
                    Cells
    (ij).Interior.Color 15921906
                
    ElseIf Src.Row Src.Column Then
                    Cells
    (ij).Interior.Color 15849925
                
    Else
                    
    Cells(ij).Interior.Color 14281213
                End 
    If
            
    Next j
        Next i
                
        Mtx
    .Borders.LineStyle xlContinuous
        Application
    .EnableEvents True
        Application
    .ScreenUpdating True
        Cancel 
    True
    End Sub

    Private Sub Worksheet_Change(ByVal Target As Range)
        
    On Error Resume Next
        Dim Vtr 
    As Integer
        Vtr 
    Mtx.Columns.Count
        
        
    If Target.Row Src.Row Or Target.Row >= Src.Row Vtr Then
            Target
    .Interior.Pattern xlNone
            
    Exit Sub
        End 
    If
        If 
    Target.Column Src.Column Or Target.Column >= Src.Column Vtr Then
            Target
    .Interior.Pattern xlNone
            
    Exit Sub
        End 
    If
        
        
    Application.EnableEvents False
        Src
    .Offset(Target.Column Src.ColumnTarget.Row Src.Row).Value Target.Value
        Application
    .EnableEvents True
    End Sub 

    هرکاری کردم فایل با پسوند xlsm نشد آپ کنم و اجبارا اون رو به rar تبدیل و آپ کردم!!!!
    فایل های پیوست شده

    کامنت

    • s.cheraghi

      • 2011/02/27
      • 311

      #3
      سلام
      با تشکر از دوستان
      برای اینکه بتونین ماتریس متقارن را هر جای شیت داشته باشین از فایل زیر میتونین استفاده کنین.
      فایل های پیوست شده
      در یادگیری سیر نشوید :idea:

      برای ارتباط بیشتر به [URL="https://excelpedia.net/"]سایت[/URL] [URL="https://excelpedia.net"][B][COLOR=#008000]ExcelPedia [/COLOR][/B][/URL]سربزنید.
      برگزاری [URL="https://excelpedia.net/excel-ninja/"]دوره های آموزش[/URL] [URL="https://excelpedia.net/what-is-excel/"][B]اکسل [/B][/URL]در تهران
      [URL="https://excelpedia.net/category/excel-functions/"][B]آموزش توابع اکسل[/B][/URL]

      کامنت

      • Darya15
        • 2015/04/22
        • 4

        #4
        با سلام می خواستم بدونم کاربرد این ماتریکسها چیه و کجا به درد میخوره؟

        کامنت

        • generalsamad
          مدير تالار توابع

          • 2014/06/22
          • 1496

          #5
          با سلام
          این یک مسئله ریاضی هستش و شاید در ماتریسهای مختلف ، یا محاسبات مختلف کاربرد داشته باشه

          هدف از این آموزش آشنائی با ترکیب چند فرمول جستجو بوده که شاید مسئله ای داشته باشیم یا بخواهیم برنامه ای (بازی) بسازیم که چنین کاری رو انجام بده
          [CENTER]
          [SIGPIC][/SIGPIC]
          [/CENTER]

          کامنت

          چند لحظه..