Scoreboard Function

DarthGremlin

New Member
Joined
Mar 25, 2009
Messages
15
Hello again,

Rorya if you help me out on this one too I swear this will be the last question I'll have a long time.

So in theory I have the following data. Showing Team, Points, and player name from a game.

<TABLE style="WIDTH: 144pt; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 width=192 border=0 x:str><COLGROUP><COL style="WIDTH: 48pt" span=3 width=64><TBODY><TR style="HEIGHT: 12.75pt" height=17><TD style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" width=64 height=17>Rockets</TD><TD style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right width=64 x:num>10</TD><TD style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" width=64>Jordan</TD></TR><TR style="HEIGHT: 12.75pt" height=17><TD style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" height=17>Rockets</TD><TD style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num>11</TD><TD style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent">Smith</TD></TR><TR style="HEIGHT: 12.75pt" height=17><TD style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" height=17>Hawks</TD><TD style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num>14</TD><TD style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent">Smith</TD></TR><TR style="HEIGHT: 12.75pt" height=17><TD style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" height=17>Rockets</TD><TD style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent" align=right x:num>6</TD><TD style="BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: #e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent">Jordan</TD></TR></TBODY></TABLE>

Now what I want to be able to do is retrieve the name of the player who scored the most points for a particular team, as well as the total points that they scored, as well as the number of times that they scored. (an admittedly weak analogy but it works)
So with this data what I want to have happen is when I type
=scoreboard(1,1,"Rockets",A1:A4,B1:B4,C1:C4)
I want the cell to show "Jordan"

but if I type
=scoreboard(1,2,"Rockets",A1:A4,B1:B4,C1:C4)
I want the cell to show 16

and if I type
=scoreboard(1,3,"Rockets",A1:A4,B1:B4,C1:C4)
I want the cell to show 2 since Jordan scored twice.

Further more if I typed
=scoreboard(1,2,"Hawks",A1:A4,B1:B4,C1:C4)
I want it to return 14 because Smith scored 14 points for the Hawks.

BTW If I type
=scoreboard(2,1,"Rockets",A1:A4,B1:B4,C1:C4)
It should return Smith

my attempt at coding this is as follows:
Code:
Function ScoreBoard(intRank As Integer, _
    intReturnType As Integer, _
    StrTeam As String, _
    rngTeams As Range, _
    rngPoints As Range, _
    rngPlayer As Range) As Variant
    ' End of arguments
 
    Dim varValue        As Variant, _
        varResults      As Variant, _
        varSortedResults As Variant
    Dim boolCategorySet  As Boolean
    Dim intRow          As Integer, _
        intRowIndex2    As Integer, _
        intTemp         As Integer
 
 
    boolCategorySet = False
    If Not RangesOK(rngTeams, rngPoints) Then
        'Return an error value
        varValue = "Error in range selection"
    Else
        'If the ranges are not identically sized can not get this far!
        For intRow = 1 To rngEvaluate.Rows.Count
            If Application.CountIf(rngTeams(intRow, intCol), StrTeam) = 1 Then
                If boolCategorySet Then
                    If Application.CountIf(varResults, rngPlayer(intRow, intCol)) = 1 Then
                        ' This Player already has already scored
                        intTemp = Application.Match(rngPlayer(intRow, intCol), varResults([], 1), 0)
                        varResults(intTemp, 2) = Application.Sum(varResults(intTemp, 2), rngPoints(intRow, intCol))
                        varResults(intTemp, 3) = Application.Sum(varResults(intTemp, 3), 1)
                    Else
                        ' This player hasn't scored yet and needs to be added
                        intRowIndex2 = intRowIndex2 + 1
                        varResults(rowIndex2, 1) = rngPlayer(intRow, intCol)
                        varResults(rowIndex2, 2) = rngPoints(intRow, intCol)
                        varResults(rowIndex2, 3) = 1
                    End If
                Else
                    ' first player scores
                    bolValueSet = True
                    intRowIndex2 = 1
                    varResults(rowIndex2, 1) = rngPlayer(intRow, intCol)
                    varResults(rowIndex2, 2) = rngPoints(intRow, intCol)
                    varResults(rowIndex2, 3) = 1
                End If
            End If
        Next intRow
    End If
 
 
    varSortedResults = SortVariantD(varResults, 2)
 
    ScoreBoard = varSortedResults(intRank, intReturnType)
 
End Function
________________________________________________________
 
Public Function SortVariantD(varData As Variant, valCol As Integer)
   Dim Swapper As Variant
   Dim i As Integer, _
   j As Integer, _
   k As Integer
 
   For i = 1 To rngToSort.Rows.Count
      For j = 1 To rngToSort.Rows.Count - i
         If varData(j + 1, valCol) > varData(j, valCol) Then
            For k = 1 To rngToSort.Columns.Count
               Swapper = varData(j, k)
               varData(j, k) = varData(j + 1, k)
               varData(j + 1, k) = Swapper
            Next k
         End If
      Next j
   Next i
 
   SortVariantA = varData
 
End Function
 
_______________________________________________________
Public Function RangesOK(rng1 As Range, rng2 As Range) As Boolean
    Dim bolAreas    As Boolean, _
    bolSize     As Boolean
    bolAreas = (rng1.Areas.Count = 1) Or (rng2.Areas.Count = 1)
    bolSize = (rng1.Rows.Count = rng2.Rows.Count) And _
    (rng1.Columns.Count = rng2.Columns.Count)
    RangesOK = bolAreas And bolSize
End Function
I get a Value error. As far as I can tell the two sub functions are working just fine. it'sthe first one that's killing it.
 
Last edited:

Excel Facts

Format cells as date
Select range and press Ctrl+Shift+3 to format cells as date. (Shift 3 is the # sign which sort of looks like a small calendar).
Realizing that people have been looking at my post and not responding (perhaps because it is unclear what my code is all about) I am adding the function ScoreBoard with notes in hopes that someone will understand what I am trying to do and be able to identify where I am messing it up
Code:
Function ScoreBoard(intRank As Integer, _
    intReturnType As Integer, _
    StrTeam As String, _
    rngTeams As Range, _
    rngPoints As Range, _
    rngPlayer As Range) As Variant
    ' End of arguments
    
    Dim varValue        As Variant, _
        varResults      As Variant, _
        varSortedResults As Variant
    Dim boolCategorySet  As Boolean
    Dim intRow          As Integer, _
        intRowIndex2    As Integer, _
        intTemp         As Integer
    
        
    boolCategorySet = False
    If Not RangesOK(rngTeams, rngPoints) Then
        'Return an error value
        varValue = "Error in range selection"
    Else
        'If the ranges are not identically sized can not get this far!
        For intRow = 1 To rngEvaluate.Rows.Count ' for each row
            For intCol = 1 To rngEvaluate.Columns.Count ' for each column
                If Application.CountIf(rngTeams(intRow, intCol), StrTeam) = 1 Then 'checks if the current value in the rngTeams matches the strTeam
                    If boolCategorySet Then
                        If Application.CountIf(varResults, rngPlayer(intRow, intCol)) = 1 Then ' checks if the current Player is already in varResults
                            ' This Player already has already scored
                            intTemp = Application.Match(rngPlayer(intRow, intCol), varResults, 0) ' find which row that Player is on
                            varResults(intTemp, 2) = Application.Sum(varResults(intTemp, 2), rngPoints(intRow, intCol)) ' add the new points to the old points
                            varResults(intTemp, 3) = Application.Sum(varResults(intTemp, 3), 1) ' increment the count of times this player scored by 1
                        Else
                            ' This player hasn't scored yet and needs to be added
                            intRowIndex2 = intRowIndex2 + 1 ' move down to the next row to add the new player
                            varResults(rowIndex2, 1) = rngPlayer(intRow, intCol) ' add the players name to column 1
                            varResults(rowIndex2, 2) = rngPoints(intRow, intCol) ' add the players score to column 2
                            varResults(rowIndex2, 3) = 1 ' start the count of times this player has scored
                        End If
                    Else
                        ' first player scores
                        bolValueSet = True ' tells the application that at least one player is on the list
                        intRowIndex2 = 1 ' starts at the top of the varResults array
                        varResults(rowIndex2, 1) = rngPlayer(intRow, intCol) ' add the players name to column 1
                        varResults(rowIndex2, 2) = rngPoints(intRow, intCol) ' add the players score to column 2
                        varResults(rowIndex2, 3) = 1 ' start the count of times this player has scored
                    End If
                End If
            Next intCol
        Next intRow
    End If
    
    varSortedResults = SortVariantD(varResults, 2)
    
    ScoreBoard = varSortedResults(intRank, intReturnType)
        
End Function
 
Upvote 0
Most recent update. So I've learned a ton in the last few hours. at this point I am pretty sure that the only thing stopping my code from working is that now I need to change the size of my variant / array and I can't seem to figure that one out. code as of now:
Code:
Function ScoreBoard(intRank As Integer, _
    intReturnType As Integer, _
    StrTeam As String, _
    rngTeams As Range, _
    rngPoints As Range, _
    rngPlayer As Range) As Variant
    ' End of arguments
    
    Dim varValue        As Variant, _
        varResults(1 To 1, 1 To 3)      As Variant
    Dim boolCategorySet  As Boolean
    Dim intRow          As Integer, _
        intRowIndex2    As Integer, _
        intTemp         As Integer
    
        
    boolCategorySet = False
    If Not RangesOK(rngTeams, rngPoints) Then
        'Return an error value
        varValue = "Error in range selection"
    Else
        'If the ranges are not identically sized can not get this far!
        For intRow = 1 To rngTeams.Rows.Count ' for each row
            For intCol = 1 To rngTeams.Columns.Count ' for each column
                If Application.CountIf(rngTeams(intRow, intCol), StrTeam) = 1 Then 'checks if the current value in the rngTeams matches the strTeam
                    If boolCategorySet Then
                        If Application.CountIf(varResults, rngPlayer(intRow, intCol)) = 1 Then ' checks if the current Player is already in varResults
                            ' This Player already has already scored
                            intTemp = Application.Match(rngPlayer(intRow, intCol), varResults, 0) ' find which row that Player is on
                            varResults(intTemp, 2) = Application.Sum(varResults(intTemp, 2), rngPoints(intRow, intCol)) ' add the new points to the old points
                            varResults(intTemp, 3) = Application.Sum(varResults(intTemp, 3), 1) ' increment the count of times this player scored by 1
                        Else
                            ' This player hasn't scored yet and needs to be added
                            intRowIndex2 = intRowIndex2 + 1 ' move down to the next row to add the new player
                            ReDim varResults(1 To intRowIndex2, 1 To 3)
                            varResults(rowIndex2, 1) = rngPlayer(intRow, intCol).Value ' add the players name to column 1
                            varResults(rowIndex2, 2) = rngPoints(intRow, intCol).Value ' add the players score to column 2
                            varResults(rowIndex2, 3) = 1 ' start the count of times this player has scored
                        End If
                    Else
                        ' first player scores
                        bolCategorySet = True ' tells the code that at least one player is on the list
                        intRowIndex2 = 1 ' starts at the top of the varResults array
                        varResults(rowIndex2, 1) = rngPlayer(intRow, intCol).Value ' add the players name to column 1
                        varResults(rowIndex2, 2) = rngPoints(intRow, intCol).Value ' add the players score to column 2
                        varResults(rowIndex2, 3) = 1 ' start the count of times this player has scored
                    End If
                End If
            Next intCol
        Next intRow
    varValue = SortVariantD(varResults, 2)
    End If
    
    ScoreBoard = varValue(intRank, intReturnType)
        
End Function
 
Upvote 0
Hello Peoples

So if anyone was curious about this function and how to get it I finally figured it out. (being a noob sucks) Here are the three functions required to get this thing to work the way I had intended. I am sure it has uses outside of those that I am using it for too so here you go.
Code:
' Written By: DarthGremlin
' Start Date Tuesday 3-24-09
' Finish Date Thursday 3-26-09
' Company: Custom Brands Group
'
' Used to find and sort amounts and categories within a larger category.  This is also the
' same functionality as a scoreboard where you have a range that contains team names, a range
' that contains point values, and a range that contains player names. I think that this is a
' clearer analogy so the variable names are marked as such, but this was really made for
' boring old financial stuff
Function ScoreBoard(intRank As Integer, _
    intReturnType As Integer, _
    StrTeam As String, _
    rngTeams As Range, _
    rngPoints As Range, _
    rngPlayer As Range) As Variant
    ' End of arguments
 
    Dim varValue        As Variant, _
        varResults      As Variant
    Dim boolCategorySet  As Boolean
    Dim intRow          As Integer, _
        intRowIndex2    As Integer, _
        intTemp         As Integer, _
        i               As Integer
 
    ReDim varResults(1 To Application.CountIf(rngTeams, StrTeam), 1 To 3)
 
    boolCategorySet = False
    If Not RangesOK(rngTeams, rngPoints) Then
        'Return an error value
        varValue = "Error in range selection"
    Else
        'If the ranges are not identically sized can not get this far!
        For intRow = 1 To rngTeams.Rows.Count ' for each row
            For intCol = 1 To rngTeams.Columns.Count ' for each column
                If Application.CountIf(rngTeams(intRow, intCol), StrTeam) = 1 Then 'checks if the current value in the rngTeams matches the strTeam
                    If boolCategorySet Then
                        For i = 1 To intRowIndex2
                            If varResults(i, 1) = rngPlayer(intRow, intCol) Then
                            boolPlayerExists = True
                            i = intRowIndex2
                            Else
                            boolPlayerExists = False
                            End If
                        Next i
                        If boolPlayerExists Then
                            ' This Player already has already scored
                            intTemp = 0
                            For i = 1 To intRowIndex2 ' finds which row that players data is on and stores that value in intTemp
                                If varResults(i, 1) = rngPlayer(intRow, intCol) Then
                                    i = intRowIndex2
                                End If
                                    intTemp = intTemp + 1
                            Next i
                            varResults(intTemp, 2) = Application.Sum(varResults(intTemp, 2), rngPoints(intRow, intCol)) ' add the new points to the old points
                            varResults(intTemp, 3) = Application.Sum(varResults(intTemp, 3), 1) ' increment the count of times this player scored by 1
                        Else
                            ' This player hasn't scored yet and needs to be added
                            intRowIndex2 = intRowIndex2 + 1 ' move down to the next row to add the new player
                            'ReDim Preserve varResults(intRowIndex2, 3)
                            varResults(intRowIndex2, 1) = rngPlayer(intRow, intCol).Value ' add the players name to column 1
                            varResults(intRowIndex2, 2) = rngPoints(intRow, intCol).Value ' add the players score to column 2
                            varResults(intRowIndex2, 3) = 1 ' start the count of times this player has scored
                        End If
                    Else
                        ' first player scores
                        boolCategorySet = True ' tells the code that at least one player is on the list
                        intRowIndex2 = 1 ' starts at the top of the varResults array
                        varResults(intRowIndex2, 1) = rngPlayer(intRow, intCol).Value ' add the players name to column 1
                        varResults(intRowIndex2, 2) = rngPoints(intRow, intCol).Value ' add the players score to column 2
                        varResults(intRowIndex2, 3) = 1 ' start the count of times this player has scored
                    End If
                End If
            Next intCol
        Next intRow
    varValue = SortVariantD(varResults, 2)
    End If
 
    ScoreBoard = varValue(intRank, intReturnType)
 
End Function
_____________________________________________
'Written By DarthGremlin
'Date: 3-26-09
'sorts a variant array by the specified column descending
 
Public Function SortVariantD(varData As Variant, valCol As Integer)
   Dim Swapper As Variant
   Dim i As Integer, _
   j As Integer, _
   k As Integer
 
   For i = 1 To UBound(varData, 1)
      For j = 1 To UBound(varData, 2) - 1
         If varData(j + 1, valCol) > varData(j, valCol) Then
            For k = 1 To UBound(varData, 2) - 1
               Swapper = varData(j, k)
               varData(j, k) = varData(j + 1, k)
               varData(j + 1, k) = Swapper
            Next k
         End If
      Next j
   Next i
 
   SortVariantD = varData
 
end function
________________________________________________
Public Function RangesOK(rng1 As Range, rng2 As Range) As Boolean
    Dim bolAreas    As Boolean, _
    bolSize     As Boolean
    bolAreas = (rng1.Areas.Count = 1) Or (rng2.Areas.Count = 1)
    bolSize = (rng1.Rows.Count = rng2.Rows.Count) And _
    (rng1.Columns.Count = rng2.Columns.Count)
    RangesOK = bolAreas And bolSize
End Function
 
Upvote 0
Ok found a few bugs and now they are fixed here. I hope someone finds this thing as useful as I do.
Code:
' Written By: Darth Gremlin
' Start Date Tuesday 3-24-09
' Finish Date Thursday 3-26-09
' Company: Custom Brands Group
'
' Used to find and sort amounts and categories within a larger category.  This is also the
' same functionality as a scoreboard where you have a range that contains team names, a range
' that contains point values, and a range that contains player names. I think that this is a
' clearer analogy so the variable names are marked as such, but this was really made for
' boring old financial stuff
Function ScoreBoard(intRank As Integer, _
    intReturnType As Integer, _
    StrTeam As String, _
    rngTeams As Range, _
    rngPoints As Range, _
    rngPlayer As Range) As Variant
    ' End of arguments
 
    Dim varValue        As Variant, _
        varResults      As Variant
    Dim boolCategorySet  As Boolean
    Dim intRow          As Integer, _
        intRowIndex2    As Integer, _
        intTemp         As Integer, _
        i               As Integer
 
    If Application.CountIf(rngTeams, StrTeam) < intRank Then
        ReDim varResults(1 To intRank, 1 To 3)
    Else
        ReDim varResults(1 To Application.CountIf(rngTeams, StrTeam), 1 To 3)
    End If
 
    boolCategorySet = False
    If Not RangesOK(rngTeams, rngPoints) Then
        'Return an error value
        varValue = "Error in range selection"
    Else
        'If the ranges are not identically sized can not get this far!
        For intRow = 1 To rngTeams.Rows.Count ' for each row
            For intCol = 1 To rngTeams.Columns.Count ' for each column
                If Application.CountIf(rngTeams(intRow, intCol), StrTeam) = 1 Then 'checks if the current value in the rngTeams matches the strTeam
                    If boolCategorySet Then
                        For i = 1 To intRowIndex2
                            If varResults(i, 1) = rngPlayer(intRow, intCol) Then
                            boolPlayerExists = True
                            i = intRowIndex2
                            Else
                            boolPlayerExists = False
                            End If
                        Next i
                        If boolPlayerExists Then
                            ' This Player already has already scored
                            intTemp = 0
                            For i = 1 To intRowIndex2 ' finds which row that players data is on and stores that value in intTemp
                                If varResults(i, 1) = rngPlayer(intRow, intCol) Then
                                    i = intRowIndex2
                                End If
                                    intTemp = intTemp + 1
                            Next i
                            varResults(intTemp, 2) = Application.Sum(varResults(intTemp, 2), rngPoints(intRow, intCol)) ' add the new points to the old points
                            varResults(intTemp, 3) = Application.Sum(varResults(intTemp, 3), 1) ' increment the count of times this player scored by 1
                        Else
                            ' This player hasn't scored yet and needs to be added
                            intRowIndex2 = intRowIndex2 + 1 ' move down to the next row to add the new player
                            'ReDim Preserve varResults(intRowIndex2, 3)
                            varResults(intRowIndex2, 1) = rngPlayer(intRow, intCol).Value ' add the players name to column 1
                            varResults(intRowIndex2, 2) = rngPoints(intRow, intCol).Value ' add the players score to column 2
                            varResults(intRowIndex2, 3) = 1 ' start the count of times this player has scored
                        End If
                    Else
                        ' first player scores
                        boolCategorySet = True ' tells the code that at least one player is on the list
                        intRowIndex2 = 1 ' starts at the top of the varResults array
                        varResults(intRowIndex2, 1) = rngPlayer(intRow, intCol).Value ' add the players name to column 1
                        varResults(intRowIndex2, 2) = rngPoints(intRow, intCol).Value ' add the players score to column 2
                        varResults(intRowIndex2, 3) = 1 ' start the count of times this player has scored
                    End If
                End If
            Next intCol
        Next intRow
    varValue = SortVariantD(varResults, 2)
    End If
 
    If varValue(intRank, intReturnType) = Empty Then
        varValue(intRank, intReturnType) = 0
    End If
 
    ScoreBoard = varValue(intRank, intReturnType)
 
End Function
 
'Written By Matt Steadman
'3-26-09
'sorts a variant array by the specified column descending
Public Function SortVariantD(varData As Variant, valCol As Integer)
   Dim Swapper As Variant
   Dim i As Integer, _
        j As Integer, _
        k As Integer
   Dim boolHitNull As Boolean
 
   If (UBound(varData, 1) = 1) Or (UBound(varData, 1) = 1) Then
    SortVariantD = varData
   Else
   For i = 1 To UBound(varData, 1)
      For j = 1 To UBound(varData, 2) - 1
        If varData(j + 1, valCol) = Empty Then
            boolHitNull = True
            i = UBound(varData, 1)
            j = UBound(varData, 2) - 1
         ElseIf varData(j + 1, valCol) > varData(j, valCol) Then
            For k = 1 To UBound(varData, 2) - 1
               Swapper = varData(j, k)
               varData(j, k) = varData(j + 1, k)
               varData(j + 1, k) = Swapper
            Next k
         End If
      Next j
   Next i
   End If
 
   SortVariantD = varData
 
Public Function RangesOK(rng1 As Range, rng2 As Range) As Boolean
    Dim bolAreas    As Boolean, _
    bolSize     As Boolean
    bolAreas = (rng1.Areas.Count = 1) Or (rng2.Areas.Count = 1)
    bolSize = (rng1.Rows.Count = rng2.Rows.Count) And _
    (rng1.Columns.Count = rng2.Columns.Count)
    RangesOK = bolAreas And bolSize
End Function
You can also make a GolfScoreBoard ( where it is sorted ascending instead of descending)
All you have to do is make a copy of the scoreboard, and a copy of SortVariantD, switch the greater than sign in SortVariantD to a less than sign and replace anywhere that scoreboard occurs in the new one with GolfScoreBoard and SortVariantD with SortVariantA
 
Last edited:
Upvote 0

Forum statistics

Threads
1,214,591
Messages
6,120,428
Members
448,961
Latest member
nzskater

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top