Sort 2D Array Not Via Worksheet?
Mar 1, 2014I'm trying to sort 2D array not via worksheet, using VBA array. But I failed. excel file enclosed (Sorting by Return and xlAscending).
View 2 RepliesI'm trying to sort 2D array not via worksheet, using VBA array. But I failed. excel file enclosed (Sorting by Return and xlAscending).
View 2 RepliesExcel file. The file has two tabs: 'Input' and 'Master'. The 'Input' tab is for users to input any new records, and the 'Master' tab is to retrieve data from the 'Input' tab. Given that some users may want to insert a row in between (rather than add at the bottom).
I used arrays in the 'Master' tab such as:
={IF(ISERROR(1/Input!E2:E250),"",Input!E2:E250)}
Now there came the problem: in the 'Master' tab, the data cannot be sorted when the arrays are used. Otherwise, there is a warning message: You cannot change part of an array.
On from a solution I am using in the sheet which uses very well an Array Formula.
In the attached book I have a sheet with a bunch of tables called Site Table. In the sheet called Working Sheet I want to get the text Site Names and list them in Column A. Sorted would be nice not required but I can't think of way to avoid blanck rows without a manual sort. I tried many versions of Find without a solution as well.
I am trying sort a bunch of different ranges. So I am trying to use the same sort code but run an array of ranges through. This code is for only two ranges
CA3:CD200 and CF3:CI200. I want to pass the ranges as variables through the sort code but I cannot get it to work.
two parts:
1.
The following is the VBA version of what i've been using:
Range("A1:J1000").Sort Key1:=Range("D2"), Order1:=xlAscending, Key2:= _
Range("E2"), Order2:=xlAscending, Key3:=Range("F2"), Order3:=xlDescending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
now arrays are bigger than 1000 rows>> even bigger than 65536.
Such an array is stored in "arrBIG" and dimed as (1 to 10, 1 to 100000). The goal is to sort it by the 4'th, then 5th then 6th values in the first dimension - the one that is 1 to 10 - i call this the column.
arrBIG.Sort Key1:=4, Order1:=xlAscending, Key2:= _
5, Order2:=xlAscending, Key3:=6, Order3:=xlDescending _.................
I would like to sort the items in an array.
View 2 Replies View RelatedI have a string (PreString) that gets its values from a procedure call (PreResult). The string consists of 4 values for each loop which I then split into the y array.
I then want to transpose the array to the worksheet for sorting.
I don't really get the transpose to work as I want to. I want every 4:th y to be printed on a new row (x). I don't really know how to use the Ubound function to get it right.
Should I make a 2 dimensional array instead ? If so, how is that made ?
Dim x As Integer, z As Integer
Dim var_Status As Integer
Dim var_Week As String
Dim var_HoursPerWeek As Integer
Dim PreString As String
i = var_StartWeekNr
j = var_RangeNumberOfWeeks
z = 0
x = 0
var_Status = 0
var_Week = ""
var_HoursPerWeek = 0
PreString = ""
I have a string that I need to sort.
Below code works beautifully but doesn't sort numbers, any advice to get this to sort numbers as well?
Function Alphabetize(ByVal sText As String) As String
Dim sWords() As String, sTemp As String
Dim i As Long, j As Long, n As Long
'-- clean up text
For i = 1 To Len(sText)
Select Case Mid$(sText, i, 1)
Case " ", "a" To "z", "A" To "Z"
Case Else: Mid$(sText, i, 1) = " "
End Select
Next
'-- remove leading and trailing spaces....................
I have a dynamic number of rows each with three colums of values. These varaibles I want to fill an array with but I don't know how.
Now I've just "concated" these three variables into a string and then I intend to split the string into rows by the third comma. (see below)
I think it's easier though to use an array and I really appreciate some assistance. Please tell me also the best way to sort the array. It will be sorted by var_Status which is an integer. (sort order: max positive to max minimum)
PreString = PreString & var_StartWeek & ", " & var_Status & ", " & var_Totalh & ", "
Im looking for an algorithm to sort an array of data, deleting multiple values whithin the array and shifting the values down the array to leave no gaps. the crude set of loops i am currently using is:
For f = 0 To 100
For g = f + 1 To 100
If LineArray(g) = LineArray(f) Then LineArray(g) = ""
Next g
Next f
which does work and serves my purpose but is messy as it leaves blank gaps in the array.
I have been trying to take a variant array that has 6 columns, output it to a new worksheet (although I would prefer to just sort the array but can't get that working - how I can do this please feel free), sort the worksheet by 2 different columns, and then move these values back into the original array. I think I have the dumping and sorting down but I can't figure out the putting back into the array part. Here is the code I have thus far. varRecords is the array I am dumping to the new worksheet.
Dim dumpSheet As Worksheet
Set dumpSheet = Sheets.Add
Range(Cells(1, 1), Cells(1, UBound(varRecords))) = varRecords
Range("A1:F" & numRows).Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range _
("A2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal
How can I sort an array of data based on the selection from a drop-down menu? And can it be 'secondary' sorted with the result from a second drop-down (ascending or descending is unimportant)?
View 2 Replies View RelatedIn the attached example file, I have two tabs: options and sets. The options tab is to be populated from a form. The sets tab is to draw data from the options tab to create teaching sets. I have managed to create an array formula that does this for me, but what I would like it to do is sort my resulting list alphabetically. For reasons that I won't go into, I need the data on the sets tab to remain in three columns: First Name, Surname and Form.
This is the array formula I am using at the moment: AliGW - Example.xlsx
I have two lists in different columns, which are defined ranges. I want to extract them to a unique list with an array formula and at the same time sort albafetically, without duplicates, like this:
List1
List2
Final List
Audi
Ford
[Code] ....
So far, I have this formula which is working in what concerns removing duplicates and exctract a unique list. But it is not ordering alfabeticaly.
{=IFERROR(IFERROR(INDEX(List1, MATCH(0, COUNTIF($D$1:D1, List1), 0)), INDEX(List2, MATCH(0, COUNTIF($D$1:D1, List2), 0))), "")}
I've attched my sample file.
The question is how to sort worksheet (VB) - see file for details
I have a workbook with about 30 worksheets (I know not that many, but enough to make me want to automate the following)
They all have the same columns and headers.
I want to sort them ALL based on Column E for example. Is there a way to do this easily, with out having to "manually" sort each worksheet?
I have a worksheet in Excel which contains scores for a quiz I am organizing. The rows contain the team names, the columns the scores per round per team.
I would like to have the worksheet automatically sort the columns in descending order (so that the winner will come out on top after the quiz has finished), everytime I change something (everytime a score is updated). I can't find anything in Excel which would allow me to do that, so I'm guessing it's only possible in VBA? Unfortunately, I don't know anything about VBA, so I'm stuck.
These are the ranges I would like to have sorted, in order of priority:
Row 1 is the row with the column titles (Round 1, Round 2,...).
C2: C26
N2:N26
M2:M26
L2:L26
K2:K26
J2:J26
I2:I26
H2:H26
G2:G26
F2:F26
E2:E26
D2:D26
how does one run code, particularly to rearange some columns upon opening a worksheet?
If A > D Then
{A=D
B = E
C=F}
and
{D=A
E = B
F=C}
End If
I found the following "sort worksheet tabs" code by searching through the threads.
Sub SortSheets()
Dim lCount As Long, lCounted As Long
Dim lShtLast As Long
Dim lReply As Long
lReply = MsgBox("To sort Worksheets ascending, select 'Yes'. " _
& "To sort Worksheets descending select 'No'", vbYesNoCancel, "Ozgrid Sheet Sort")
If lReply = vbCancel Then Exit Sub
lShtLast = Sheets.Count
This code works fine but I need to adjust it a little. I have over 70 worksheets that will need to be sorted. At the same time, there are about 6 worksheets that I dont want to sort and want to keep right infront all the time.
After copying the data from a sheet to another the sort generates an error. write the vba for sorting the copied data?
Sheets("PM").Activate
norowspm = Sheets("PM"). Range("A65536").End(xlUp).Row
Sheets("PM").Range("A6:A" & norowspm).Select
Selection.Copy
Sheets("OP Vs CL").Activate
Sheets("OP Vs CL").Range("F1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Stop
Sheets("OP Vs CL").Range("F1:F" & norowspm).Sort key1:=Range("F2"), _
Order1:=xlAscending, header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
I basically need a macro to sort the sheet by V, U, T starting from row 3 and ending before the last vechicle. This is the problem though, the last vehicle ends everytime right before Car # in column A. So in other words in this example i would need it sorted by v u t, starting from 3 down to row 12. It ends at 12 because the next line includes car and a number.
Another sheet might have a longer list of vehicles and might end at row 100 before the next line has car number .
It always starts at 3, but the ending is dynamic where it should stop its selection before "car number ".
I would also like it to work on the current sheet im on, because i have up to 100 sheets like this and would not want it name dependant. Just want to click on a tab, and run a macro and have it sort from 3 down to the line before car in column A.............
From the sample file, I am using the data on (start) worksheet. (Sort and format sheet) . This one is way over my head. After new data is added to the sheet via another UserForm, I want to sort the list by name and have alternating backgrounds based on grouped unique names.
View 2 Replies View RelatedI would like to have a button or a link on my spreadsheet that when it is clicked will sort my table with a pre-defined sort.
View 3 Replies View RelatedI need a macro to clear data on 2 worksheets that i can add to a button. lets say sheet1 B55:Y55 and sheet2 b102:y102
View 3 Replies View RelatedI have data in several (50+) columns. I want to be able to sort all my data by the column I select with one click. So, I basically want a button over each column that sorts the data by that column. It would be ideal to have the same "Sort" macro that is attached to all the buttons. The macro should somehow know that the column the button is in, is the column to sort by.
View 9 Replies View RelatedI'm trying to auto sort a list of ranks that are linked to another sheet. My sort code works when it referers to input number values, but when it refers to cells that have formulas, it does not recognize the value from the formula, only the formula itself. Any ideas would be welcome.
View 4 Replies View RelatedI'm not fond with macros, but this is what i need help with.
I need two macros one to sort ascending (Ctrl+A), and one to sort descending (Ctrl+D).
This is what the macro to do. Unprotect, sort selected column, protect.
I have been trying to sort the cells in a worksheet, but am unable to properly select the range of cells I need
For Each ws In Worksheets
If ws.Name <> "MySheet" Then Goto nxt
If ws.Name = "MySheet" Then Worksheets("MySheet").Activate
Range("A1:F" & totval).Select
Selection.Sort Key1:=Range("F1"), Order1:=xlDescending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
nxt:
Next ws
the code mentioned above throws an error when it gets to the range.select line. I cannot simply say usedrange.select.
It keeps throwing error 1004.
Please ignore the "& totval" in above code. That was my attempt at specifying the last row number, which i specified in the totval variable
I dont know how exactly to specify the range of cells containing data in the activated worksheet above, and then select them for sorting.
I have a column containing 365 entries, one for each day of the year. This I intend to send out to Army bands, to have them fill in their forecast of engagements. I do not want them to be able to amend the original diary, but to scroll to the bottom of the list, add a new entry with the applicable date and then be able to 'sort' back to chronological order. This would then allow a separate entry for every engagement to allow me to interrogate the spreadsheet. As I have protected the sheet, the 'sort' facility does not function even though when protecting I ticked the box to allow users to 'sort'.
View 2 Replies View RelatedI am using Excel 2003 and have used the Data > List > Create List... menu. I am after a worksheet deactivate macro that will sort the data within a data list first by column A and then by column B. I have found a macro that can be activated by a button when working on the worksheet:
Sub Sort_A_then_B()
With ActiveCell. CurrentRegion
.Sort Key1:=. Cells(1, 1), Order1:=xlAscending, _
Key2:=.Cells(1, 2), Order2:=xlAscending, _
Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom
End With
End Sub
However it is important that the data within the worksheet is sorted by column A then B when I move to another worksheet. I would like the macro to be able to sort the data list by however many rows or columns there may be within the list. I assume this would include as follows: With ActiveCell.CurrentRegion