Use FIND Instead Of Looping
Apr 29, 2008
I'd heard that using FIND might make macros run faster than looping. Below is the code I'm currently using. There are two worksheets. The first has a column containing numbers and a blank column to insert the associated code. Sheet two has a list of unique numbers with the associated code. Presently I used a nested loop to populate the code column of the first sheet. As sheet 1 contains in the neighborhood of 25,000 rows it can take quite a long time to run using the loop
Option Explicit
Sub BWRawCoding()
Dim wb As Workbook
Dim wsPT As Worksheet, wsAgg As Worksheet
Dim RowsPT As Integer, RowsAgg As Integer
Dim LoopPT As Integer, LoopAgg As Integer
Set wb = ActiveWorkbook
Set wsPT = wb.Worksheets("Graphical Data -RAW")
Set wsAgg = wb.Worksheets("agg")
RowsPT = wsPT.UsedRange.Rows.Count
RowsAgg = wsAgg.UsedRange.Rows.Count
For LoopPT = 2 To RowsPT
For LoopAgg = 2 To RowsAgg
If wsPT.Cells(LoopPT, 6).Value = wsAgg.Cells(LoopAgg, 2).Value Then
wsPT.Cells(LoopPT, 24).Value = wsAgg.Cells(LoopAgg, 1).Value
End If
Next LoopAgg
Next LoopPT
End Sub
View 9 Replies
ADVERTISEMENT
May 16, 2009
I am trying to provide a search string and then loop round searching for this search string until the beginning find cell is found again however I am having problems making my code work - here it is:
View 2 Replies
View Related
Nov 2, 2012
I have a set of data and I need to find the max for range 1-10, then 2-11, then 3-12 and so on. Is there away to do this using a loop. I'm new to vba and I've been trying but either it doesn't work or I get an error message.
View 8 Replies
View Related
Mar 8, 2007
The following macro searches Sheet1 for a value in a user defined textbox. When it finds the value it copies the row and and pastes the row in another sheet and then loops. My problem is i need to add a "do until" so that i will stop. I just don't know what code to add after the "until" to have it search the sheet once and then stop. Right now it will repeat infinitly. I need to know how to get it to stop once it looks through all the cells once. My current code is:
Private Sub CommandButton1_Click()
Do
Sheets("sheet1").Activate
Application.CutCopyMode = False
Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Select
ActiveCell.EntireRow.Copy....................
View 6 Replies
View Related
May 4, 2009
As a part of a much larger routine, I need a code to find five consequetive cells in a column with identical value "XYZ" and select the first one of them. Say,
I have a column:
apples,
pears,
apples,
oranges,
xyz,
oranges,
xyz,
xyz,
xyz,
apples,
apples,
apples,
xyz,
xyz,
xyz,
xyz,
xyz,
xyz,
xyz,
etc.
I need to select the twelfth cell in this column, highlighted red.
I guess there could be some complicated if-then loop to go through the whole column, checking each cell and comparing it to the next four, but it would take forever to excecute... Is there some other way around? To find the first occurence of five xyz's one directly under another?
View 9 Replies
View Related
Mar 6, 2010
I've written a macro which searches the sheet for a value, when it finds the value it does something, then I want it to keep looping until it's done.
The issue is that Excel's find does not search first to last. Once it gets to the last, and you search next, it goes back to the beginning and finds the first cell.
In order to break out of the loop, I figured I should store the first cell found in a variable and then check inside my loop to see if I have got looped back to the beginning. If I got back to the first cell found, then I exit my loop and I'm done.
However, my code doesn't work. It exits the loop after a couple of iterations.
Sub Macro5()
'
' Macro2 Macro
'
If WorksheetFunction.CountIf(Cells, "TEST") = 0 Then
MsgBox ("Not Found")
Exit Sub
End If
Cells.Find(What:="TEST", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Activate...............
View 9 Replies
View Related
Mar 6, 2007
to perform find, if match, ubdate, looping action in various sheets of excel through VB.
Currently, i am working at WAREHOUSE, where not having SAP OR ERP to perform [ maintain ] each & every in & out movement of products. However, i have been using excel to put in values for in & out manually....
View 6 Replies
View Related
Mar 14, 2007
What I'd like to know now is if there is a way to loop through a set of controls...I'll call that set 'A' and if the value "No Option" is found in one of A's controls, then a corresponding control in set 'B' is formatted as disabled and with a value of 'X'.
Ex. Control A1 = "Cat"
Control B1 is enabled with no value
Control A2 = "Dog"
Control B2 is enabled with no value
Control A3 = "No Option"
Control B3 is disabled with a value of 'X'
Control A4 = "No Option"
Control B4 is disabled with a value of 'X'
The code below shows where the wheels came off:
Option Explicit
Const lGrey As Long = &H80000005
Const lGreen As Long = &HFF00&
Dim BM1 As String
Dim TextBox As Control
Dim TextBox1 As Control
Private Sub UserForm_Activate()
LoadOptionCriteriaData
LoadFormat
End Sub
View 3 Replies
View Related
Mar 7, 2013
Where i want to carry out a find and replace specific to different worksheets.
At the moment i have:
Sub Changeme ()
Dim SH As Worksheet
Dim rng As Range
Dim rCell As Range
Set rng = ActiveWorkbook.Sheets("sheet3").Range("A8:C10")
[Code] ........
Where column A contains the tab name, column B contains what to replace and column C contains the replacement.
View 8 Replies
View Related
Jun 19, 2014
I have modified some code I found in these forums that once I enter a value in a cell I can have it find the closest match to that value and scroll down the list and paste that value as an offset. The code works perfectly, but my data will often contain the same values repeated and these aren't duplicates and I need to know how to loop the code to ensure it doesn't just find the first value but also the second (if the first is already populated) Code is:
Sub findclose()
Dim rng As Range, Dn As Range, Mx As Single, oAd As String
Dim num As Range
Set num = ActiveSheet.Range("B1")
[Code] .......
---- What I need to do is insert a loop of some sort that basically says IF my offset cell has a value then to find the next closest amount and continue the macro.
So if my list was:
700
50
500
600
500
And I wanted to find 499 then my list would look like:
700
50
500 499
600
500
BUT if I wanted to match off another amount of 501 it would keep the 499 it found and then find the 501 making the completed list look like:
700
50
500 499
600
500 501
Right now the amounts are being overidden as I don't know how to loop it...
View 6 Replies
View Related
Nov 21, 2006
My spreadsheet's column Z is a delivery date. When the workbook is started up (preferrably once per day, rather than each and every time you start it in a day), I would like to be able to loop through column Z, and if the date is today, toss the same row's columns A, D, and J on to `Summary`!A2:A?? (however many rows it needs), concatenated. I know I can do it easily with a for loop, but as I've learned, for loops tend to be really slow. Is there a quick or better way to do this than with a for loop?
View 9 Replies
View Related
Aug 8, 2014
I know how to loop for 1 to 10.
But is it possible to loop for 01 to 10?
Like:
[Code] ......
Because I am pulling data from external aplication, so the 0 is fix in a row/column.. I will need to get the row/column for the whole "01" and not only "1".
View 2 Replies
View Related
Aug 18, 2009
I am not sure what I am doing wrong with this expression. I know the code is a little messy, sorry.
View 2 Replies
View Related
Aug 8, 2009
Is it possible to write a cell formula (not a macro) to loop through a range of cells and test for a value? Something tells me that I need to use the "Offset" function.
View 9 Replies
View Related
Feb 14, 2010
How do I continue to loop through the last row and get the values to 3 differrent text boxes?
If I remember right, I think the command is Offset, 1 to go to the right one cell correct?
Sub CommandButton1_Click()
'("PowerAnalysis").cells(Row, 3).Value = textbox1.Value
'Worksheets("PowerData").Cells(Row, 3).Value = TextBox1.Value
Set WkSht = Worksheets("PowerData")
LastRow = WkSht.Range("A" & Rows.Count).End(xlUp).Row
WkSht.Cells(Row, 1).Value = TextBox1.Value
'LastRow = r
'r = ActiveCell
'Dim r As Long
'r = ActiveCell.Row
'UserForm3.Show
'WkSht.Cells(Row, 3).Value = TextBox1.Value
UserForm3.TextBox1.Value = r
End Sub
This code is wrong, but how can I get the first three records on the last row to display in three textboxes on UserForm3 titled TextBox1, TextBox2 and TextBox3.
Norie may be right, I may not have to even think about using repaint.
View 9 Replies
View Related
May 21, 2006
I have created a spreadsheet used for timber design. The spreadsheet calculates whether a specified size of timber column will support a specified load under certain conditions.
The various conditions include, load duration, service class, strength class and limit states.
Ok at the moment the user specifies the load and length of the column, then chooses a size of timber and sets the conditions mentioned above. Once this has been done the calculations i have put together on another sheet, work out whether the size of timber can support the specified load.
It is important to know that the answer for the final strength formula of determining the strength of the column should be equal to or less than 1. If this is the case then the column is ok, if the answer is larger than 1 then the column isnt safe.
Also at various points within the calculation certain checks are required to make sure certain design values satisfy certain criteria. If they dont then a new size of timber sould be tried.
What i would like to be able to do is use a loop so that the spreadsheet will use differing sizes of timber and calculate the values that satisfy the criteria and eventually find the size of timber required. The final answer of the strength calculation should be as close to 1 as possible but not over.
View 8 Replies
View Related
Nov 5, 2006
My code is supposed to generate figures to plot the changes in a riverbed profile with time. At time zero, there is a main subroutine that goes through a number of Subroutines and iterations before ending. At time t, I have another main subroutine which is slightly different but would go through most of the subroutines of tine zero. I want the code to go through for time t=0, display the values and then go through the other loops as well, displaying the values for each loop. I thought I knew what I was doing, but the displayed results showed reasonable results for the first (time zero), but the others were just replicas of the same thing. Is there anyway I could use variables with vectors i.e patty(j,i), where i could run the loop for i, and then do Next j.
View 4 Replies
View Related
Feb 8, 2013
I have the below code which converts a range to PDF and saves it on our network drive. I would like to change my code to a loop so I don't have to do so much typing. There are 68 rows between each range.
VB:
Sheets("CPS CSR Dashboards").Range("A2:K69").ExportAsFixedFormat xlTypePDF, "G:Call Center ReportingWeeklyAgent DashboardsTemp" & [ 'CPS CSR Dashboards'!M3] & ".pdf"
Sheets("CPS CSR Dashboards").Range("A70:K137").ExportAsFixedFormat xlTypePDF, "G:Call Center ReportingWeeklyAgent DashboardsTemp" & [ 'CPS CSR Dashboards'!M71] & ".pdf"
A2:K69 is the range for Agent 1 which will be saved as as a PDF M3 is the cell which contains Agent 1's name for which the file is to be named.
A70:K137 is the range for Agent 2 which will be saved as another PDF M71 is the cell which contains Agent 2's name.
View 1 Replies
View Related
Jul 6, 2013
I am trying to code something that will loop through a given set of columns. I know that if I say "For each C in R", that would mean, looping through each cell inside the Range "R", but what I want is something like this:
VB:
Dim rzRng As range, rzSmallRng As range
Set rzRng = Union(range("A:A"), range("C:C"), range("F:F"), range("AB:AB"), range("AS:AS"))
For Each rzSmallRng In rzRng
statement here...
Next
(I have a total of 30 columns that I need to put inside that Union function) . And then loop through the range as a whole set (not though each cell of that range).
I also tried the following code:
VB:
With Union(range("A:A"), range("C:C"), range("F:F"), range("AB:AB"), range("AS:AS"))
statement here....
End With
But it ended up executing the code in Range"A:A" only.
View 8 Replies
View Related
Mar 19, 2014
I have to manually drag my formula for 121 cells and then change the formula by next column and/or row number.
Currently the 2 formulas I have are:
=IF(AND($Z$4>="", $AA$4>=""),H$6,J2456)
=OFFSET(X$5,0,(ROWS($1:1)-1)*2)
After every 121 cells that I drag these formulas to, in the first formula I change from H$7 to H$7 then H$7 then H$7 and so on
In the second formula, I change from X$5 to X$6 then X$7 then X$8 and so on.And also change the ROWS from 1:121 back to 1:1
Is there a formula which I can drag and it automatically changes the column and cell reference in the 2 formulas?
View 6 Replies
View Related
Apr 11, 2014
I am looking to create a loop in a ListObject object that does calculations depending on the value of the current certain row in a column. This is the code I have so far:
[Code]....
I am having trouble with the loop; as you can see, the nested for loop will go through all the 'weight' in the column before going to the next 'grade'. I just want the loop to reference the same 'weight' that the 'grade' is on and move on. But I am not sure how to reference each 'weight' as I progress through each 'grade' in parallel.
I am aware that I can do this with regular cell references:
[Code] ......
but I am more interested in learning on how to work with the ListObject class.
View 2 Replies
View Related
Apr 28, 2007
I am using the following code in a project and would like some help to loop it until either TRUE or #N/A is found in the active cell.
View 9 Replies
View Related
Dec 2, 2008
so i've got a spreadsheet that i'm working on that i'm doing some automation for and i'm not sure where to go from here. i don't know too much about coding, but pick up a little here and there.
so what i have is 2 spreadsheets that i'm using to compare data and copy and paste the information found. there is a list of data in column E that i am copying and pasting into the "timestamp log" which has a macros that search for a variable in that workbook, if the variable is found the cell is copied. then "advisor info1" is activated and pasted in column H.
now i'm trying to avoid having to write the below coding for each and every cell in column E that has data to be found. is there a way to loop the process until a blank cell is found? like to have it search cell e2, e3, e4, e5... etc until it hits a cell with nothing in it? sometimes i have over 1000 cells in column E that i need to search through and trying to copy and paste out the below information 1000 times is very tedius and a waste. anyone have any ideas?
i'm not sure if i explained it clearly enough, let me know if you need a little more clarification .......
View 9 Replies
View Related
Mar 8, 2009
I have a formula in cell A1 and text in either cell B2 or C2. This text continues down the rows until there is no text in either columns B or C. I wish to copy the formula in A1 into A2 and then continue copying down column A until both cells in column B and C are empty. What is the excel VBA code?
View 2 Replies
View Related
Mar 17, 2009
I'm trying to set up a simple macro to loop through some number of dates on a sheet and blank out fields next to every instance of Saturday and Sunday. The only problem I'm having is actually finding the values "Saturday" and "Sunday"
Given a date in this format: 01/01/2009
I can convert to "Thursday"
Problem is, the vba code still "sees" 01/01/2009
I've tried copy / paste special / paste values to no avail.
I've tried changing it via VBA (a few different methods, including strings, formats, etc) with no luck. Even tried referencing my date cells from another spreadsheet and pasting the values back in. Can't seem to get 01/01/2009 to be "Thursday"
View 4 Replies
View Related
Sep 24, 2009
I have a macro that seems to get bogged down during a replace function because sometimes there is no need to replace. I figure I need to loop this and cannot figure out how to do it.
I have the code below and need to know how to loop this ....
View 10 Replies
View Related
Nov 2, 2009
Aloop I am trying to put into a macro. I have a variable range of data in Column C, header is in C1. I need to split the data in each row of the array using this code.
View 2 Replies
View Related
Jan 27, 2010
I'm wanting to loop through the first 13 Frames of a Userform and think the below code will do what I want, but I have been unable to figure out how to set cFrame.
View 5 Replies
View Related
Nov 18, 2011
I have a worksheet that has multiple (form type) checkboxes on it, and I want to write code to loop through a specific range of them (Checkbox 26 to Checkbox 36 for instance), check if the value is true and then return the .Caption value to a message box, or ultimately a cell on another worksheet.
I can do it for all of the checkboxes on the ActiveSheet, but just can't figure out how to run through.
View 3 Replies
View Related
Oct 19, 2012
I wrote a macro to loop through all of the worksheets in a work book and print all of the sheets except the first one labeled as "BidCandidates" and the last sheet labeled as "Blank".
It works just fine. However, I want it to work even when there is no first sheet labeled as "BidCandidates" and last sheet labeled as "Blank". There will be an unknown number of sheets to print and they will all have a label starting with a number from "02" through "50". For Example "02 - Selective Demolition".
Here is the code I have written;
Sub Print_All_Analysis_Sheets()
'
' Print_All_Analysis_Sheets Macro
'
'
Application.ScreenUpdating = False
Sheets("BidCandidates").Select
ActiveSheet.Next.Select
[Code]...
View 6 Replies
View Related