finding max value
Eliminate Pivot Table Annoyances
Thanks Thanks:  0
Likes Likes:  0
Results 1 to 4 of 4

Thread: finding max value

  1. #1
    New Member
    Join Date
    Apr 2002
    Posts
    2
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default

     
    In Excel we can do this by =max(range) but I cannot figure out how to do it in macro.
    For example, I have the data in two columns:
    1 2
    1 3
    2 1
    2 4
    3 1
    4 2

    The table means that ID#1 is related to ID#2 and 3, etc.
    I want to make a macro to find the max of column 1 (which is 4). Then make a nxn matrix, n is the max of col#1 = 4.
    The matrix will be
    1 1 1 0
    1 1 0 1
    1 0 1 0
    0 1 0 1

    1 means related, 0 means not related.

    Can anyone help? Thanks!

    [ This Message was edited by: zain zahran on 2002-04-07 09:53 ]

    [ This Message was edited by: zain zahran on 2002-04-07 09:55 ]

  2. #2
    Board Regular
    Join Date
    Mar 2002
    Location
    Cincinnati, Ohio, USA
    Posts
    6,824
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default

    Sub FindMax()
    Dim YourRange As Range
    Dim MaxNum
    'define the range
    Set YourRange = Worksheets("Sheet1").Range("A1:A10")
    MaxNum = Application.WorksheetFunction.Max(YourRange)
    'your answer is...
    MsgBox MaxNum
    End Sub

    Search VBA help for:
    "Using Microsoft Excel Worksheet Functions in Visual Basic"
    Have a nice day!
    Tom

  3. #3
    BatCoder
    Join Date
    Feb 2002
    Location
    Turkey
    Posts
    799
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default

    Paste this code in Sheet1 module:

    Private Sub CreateMatrix(rng As Range)
    Dim tmpVal
    Dim i As Integer, j As Integer
    Dim c As Integer, r As Integer

    For i = 1 To rng.Rows.Count
    If rng(i, 1).Value > tmpVal Then
    tmpVal = rng(i, 1).Value
    End If
    Next i
    Cells(rng.Row, rng.Column + 3).Select
    r = ActiveCell.Row - 1
    c = ActiveCell.Column - 1
    For i = 1 To tmpVal
    For j = 1 To tmpVal
    Cells(r + i, c + j).Value = 0
    If i = j Then
    Cells(r + i, c + j).Value = 1
    End If
    Next j
    Next i
    For i = 1 To rng.Rows.Count
    Cells(r + rng(i, 1).Value, c + rng(i, 2).Value).Value = 1
    Next i
    End Sub


    Locate your numbers in A1:B6 as you gave sample above. And run this line of code in immediate window:

    Call CreateMatrix(range("A1:B6"))

    You can modify it however you need.

    regards

    _________________
    Oz ~ TheWordExpert

    [ This Message was edited by: smozgur on 2002-04-07 15:12 ]

  4. #4
    New Member
    Join Date
    Apr 2002
    Posts
    2
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default

      
    Thanks to TsTom and Smozgur!!!!

User Tag List

Like this thread? Share it with others

Like this thread? Share it with others

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

 

 
DMCA.com