Reduce Macro Perform Array Of Sheet (not All Sheets)
Feb 3, 2010How can I make this macro easier (smaller)? The same action is performed on an array of sheets (not all sheets).
View 4 RepliesHow can I make this macro easier (smaller)? The same action is performed on an array of sheets (not all sheets).
View 4 RepliesI have this formula that checks a line of values to see whether it is within the constraints of a separate list of values.
=if(AND(Data1!A4="count1",Data1!D4>="bin1",Data1!D4
trying to loop through an array, with each loop calculating a formula (VLOOKUP) for one cell based on the values of a cell in another sheet.
Not sure but I think it has something to do with looking up a text value while the loop returns a value.
Private Sub ExpandFormula()
'calculates Counttarget formula in COUNTTARGETS sheet across required range
Dim CellsDown As Long, CellsAcross As Integer
Dim i As Long, j As Integer
Dim TempArray() As String
Dim TheRange As Range
Dim CurrentValue As String
'get the dimensions
CellsDown = Worksheets("SEPARATE").Range("D9").Value
CellsAcross = Worksheets("SEPARATE").Range("E9").Value
'redimension temporary array
Redim TempArray(1 To CellsDown, 1 To CellsAcross) .....................
I'm trying to achieve a table of weighted ranking based on correlations, a table I already have like the one given below
John / Products Owned 1 2 3 4
Shoes Socks Polish Brush Lace
Trousers Shoes Socks Belt Polish
Wallet Belt Trousers Shoes Socks
What I'm trying to achieve is this:
for all the top 4 correlations given for each product owned, i need to consider the ones not owned by John and recommend overall rank of the following nature:
For instance, the rank of socks here will be (1+2+4)/3 = 2.33, the rank of belt will be (5+3+1)/3 = 3 [ I'm considering the rank of belt as 5 for shoes, since it doesn't occur in the top 4 ]. Shoes, here will not be ranked since it is already owned by John.
I'm struggling to translate the logic into code here. Currently I perform it in a cumbersome manner, copying all columns to one column, then performing a pivot to find repetitions and so on.
Perhaps there's a function that could scan a dynamic sized table here, find the unique items and number of times they're repeated?
I have a problem where I extended a formula down to over 40,000 records which has increased the file size substantially. I only need it to scroll down to a few thousand rows now that I realized that there is alot less data to populate the worksheet. Is there any way to get it back to a scroll range that is more modest in size?
View 1 Replies View RelatedSum every instance of [SPREAD]*[SIZE] where [NAME] occurs within a text string.
Please note, I'm trying to do this without creating a new column [SPREAD]*[SIZE].
I am trying to make certain changes to the page setup on all sheets in a workbook. Here is my code but something is not working. I think I need to somehow select the next sheet because the macro is only performing the task on the active worksheet. My Visual Basic skills are somewhat limited so I'm sure this is not the most efficient way.
View 3 Replies View RelatedI have the below VBA code associated with a sheet called "Select View". When the workbook opens there is another code that displays only "Select View", all the other sheets are hidden. In "Select View" there is a data validation list. Based on the selection the user gets to see only certain sheets. For example, if the user selects "Region 1" they see only the sheets "Region 1", "Panama City" and "Pensacola".
As you can see some of the names in the "Target.Value" are the same as sheets in an array. The ones that do are lead schedules, that is information from other sheets in an array roll into it. That is values from "Pensacola" and "Panama City" flow into "Region 1", the lead sheet.
What I am trying to do is finish the code where based on the "Target.Value" selected it automatically takes the user to the lead sheet. For example, when the user selects "Region 1" in the data validation it takes the user directly to the sheet "Region 1". The user of course can also see the other sheets in the array, that is "Pensacola" and "Panama City" and can manually select the tab to view or go into one of the later
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sh As Worksheet
If Not Application.Intersect(Range("B10"), Target) Is Nothing Then
For Each sh In Sheets(Array("Panama City", "Pensacola", "Region 1"))
sh.Visible = Target.Value = "Region 1"
Next sh
[Code]....
I have a spreadsheet with 34K rows. I would like to reduce to only the rows that include a certain word.
View 5 Replies View RelatedI have created a macro that loops through and creates an array of the visible sheets. Now I would like for it to print each of those sheets out. I think my main mistake is in my declaration of the array type, since I have not worked with arrays much before.
how to make the following code operable. Currently when I run it I'm getting a "Run-time error (9): Subscript out of range" error.
Here is my macro
MyFileName = Sheets("Macros").Range("B1").Value
MyFileNameTwo = Sheets("Macros").Range("B2").Value
Sheets("Blank").Select
Sheets.Add After:=Sheets("Blank")
[Code] .........
Issue with array that's bolded The way it is set up is to rename the 3rd sheet to MyFileName and rename the last sheet to MyFileNameTwo. The file names will remain constant. They will always be the 3rd and last sheets, but the number in between will vary. Is there anyway to select the 3rd sheet through the last sheet to delete these? When I use the array it wants sheet names but those are based on multiple variables in other workbooks.
I am trying to develop a system to allow me select different parts from multiple sheets and then add them into a bill of material on a separate sheet.
[URL] ...........
I have written some VB script the best I can and it includes a 'commandbutton' to make it easy for the user of the workbook to use.
This is how it works:
Go to 'Step 1 - Manifold 8640' tab and highlight one of the yellow cells.Once you have selected a yellow cell, you then click the 'select' button above.The value (along with other values) are copied to the 'Smart Calc' sheet.Then you go to 'Step 2 - Gland Plate' tab, select a yellow cell, click the 'Select' button.Notice how the 'Step 2 - Gland Plate' value is entered into a different group in the 'Smart Calc' sheet - this is great................BUT
The issue I am having is:
If the user goes to 'Step 1 - Manifold 8640' tab, highlights the desired yellow cell then presses the 'Select' button twice, it will add two lines of data in the relevant 'Step 1 - Manifold 8640' section....This is ok.But when the user clicks a third time, the 'Step 1' data will overflow into the 'Step 2' section of the 'Smart Calc' tab...because the script tells the data to look for the next available line to write to. This is what I am trying to avoid!
Instead, i would like a message box to popup to indicate to the user that they cannot add anymore data into into the 'Step 1' or 'Step 2' sections of the 'Smart Calc' tab until they clear the data from within the relevant section in 'Smat Calc'.
I would like to set limits on where each 'Step 1' or 'Step 2' data is written to the 'Smart Calc' sheet (so it is within its relevant section). As you can see the script basically looks for the next available cell but this isn't really good when the data 'overflows'.
Note that you are able to highlight the yellow cells in the 'Smart Calc' tab and press the delete key, it will delete the data to clear the line. That is how i designed it to work so if the user makes a mistake they are able to just delete the relevant line and enter new data.
I have a macro which refreshes a query when the spreadsheet is opened. This works fine when online.
However, if the user is not online, the query is unable to refresh and the macro just hangs.
Is there a code which will enable me to say " if unable to refresh then move on to the next line"?
here's the code below.
Private Sub Workbook_Open()
Sheets("Houselist").Activate
Selection.QueryTable.Refresh BackgroundQuery:=False
Sheets("Front").Select
Range("A1").Select
End Sub
I'm researching a load of financial data downloaded for me from Bloomberg. It lists daily prices of 15 commodities for nearly 20 years in some cases! Its far too much data to get anything worthwhile out of, so I'd like to know if any of you guys have used or know what the VBA is to write a macro that will reduce all the data from daily to monthly. (ie. I want a macro that will allow me to quickly delete all data corresponding to dates which are NOT the end of the month).
View 5 Replies View RelatedI need a macro which will perform 5 simple tasks on my Customer sheet once a button is clicked:
1) Change Cell C15 (Drop down box) Value from "Confirmation" to "Delivery Note"
2) Put the current date in Cell H43 (I do not want this to update everytime i re-open the spreadsheet however) - is this possible?
3) Value of H23 to be the same as C16 on the Delivery Sheet ( guessing this will be =Delivery!$C$16)
4) Print Customer sheet
5) Print Delivery sheet
I'm guessing the hardest part is to stop the date changing?
I am looking for the easiest way for my worksheet to perform the following:
My 1st sheet (Sheet1) has columns A-C
In Column "A" there is a Cust # call it "P200"
In column "B" I have an invoice amount of $500.00
In column "C" -In this case, I need this field to calculate 15% of the amount in column "B"....and return the result of $75.00 (however, this 15% figure will vary based on data looked up in (Sheet2)
ie... in (Sheet2)
Column "A" will list all cust #'s that my company has - A1=P100, A2=P105, A3=P125, A4=P127, A5=P200 etc....
Column "B" has each respective discount amount for that customer by %... B1=10%, B2=10%, B3=12%, B4=20%, B5=15%
So the macro I need for (Sheet1- column C) will need to search "Sheet2" column "A" to find the "P200" out of the long list and then take the corresponding % amount in column "B" (in this case it's 15%) and use this figure in (Sheet 1) to perform the calc.
I've been having trouble recently with my workbook file size growing rapidly due to copy and paste commands and such. I found a very nice macro to reduce file size called ExcelDiet located at [url]
Option Explicit
Sub ExcelDiet()
Dim j As Long
Dim k As Long
Dim LastRow As Long
Dim LastCol As Long
Dim ColFormula As Range
Dim RowFormula As Range
Dim ColValue As Range
Dim RowValue As Range
Dim Shp As Shape
Dim ws As Worksheet
Application. ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
This code works fine until I share the workbook. Can anyone take a look at this code and provide some information as to why this might be happening?
I need a macro that will perform a set of oprations on all worksheets in a workbook. The names and number of worksheets will not always be the same. I have found several macros that look like they will do this, but when I try to add my code they don't seem to work.
View 9 Replies View RelatedI have two sheets. One is named sheet1 where all my data is and sheet2 where all my values are. I want to do a find a replace on column N (sheet1) using the data in sheet2. Column A on Sheet2 has all the values that are found in column N and column B on Sheet2 has what the data should change to.
So for example:
Sheet1 says the following on column N:
cat
dog
lion
bear
Sheet2 says:
Column A
A1: Cat
A2: Dog
A3: Bear
Column B
B1: 2
B2: 8
B3:15
I want the values on column N to be replaced with 2, 8, 15 and so forth. I use excel 2010.
Converting old reports to usable excel format. I am having trouble using VBA to set up a looping macro that would search Column A for cells with the text string: "ACTIVITY TOTAL". If cell has that value I would like to perform text to column action on the adjacent cell (R0C1). The macro recording for the test to column settings i need is :
Selection.TextToColumns Destination:=ActiveCell, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, OtherChar _
:=":", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
1), Array(6, 1), Array(7, 1)), TrailingMinusNumbers:=True
I have attached a sample of what I am currently working with. The actual file has roughly 6000 lines of data, so I would like the macro to go through all lines.
Attached File : LoopingVBA.xlsx
I have an excel Workbook made up of sheets that are named after months ("May 2014", "Jun 2014" etc). I want to pull data from each sheet that comes after a user specified date.
View 3 Replies View RelatedSheet1: 10 columns (can have any number of rows, let's say 5,000 rows)
Sheet2: 10 columns (can also have random number of rows, let's say 10,000)
Both sheets have the same data but the column headers may be slightly different due to the source being different systems
Here's what I need: I need a macro to copy the data (without the headers) from Sheet1 underneath the the last row of Sheet2. For example beginning on the 10,001 row of Sheet 2. OR, if it's easier to copy the data in both sheets to a new sheet. The new sheet will already have the headers so begin pasting on the second row
I have the following macro which picks up a cell's value and then searches and replaces it throughout the whole workbook:
Dim sh As Worksheet, r As Range, c As Range, s, arr, x As Long
arr = Sheets("Exclusives").[b2:b250]
s = Array("Exclusive", "", "", "", "", "", "", "", "")
For Each sh In Sheets
If LCase(sh.Name) Like "*family*" Then
sh.Activate
For Each r In [b8].Resize([b65536].End(xlUp).Row, 1)
For x = 1 To 249
If r.Text = arr(x, 1) Then
r.Resize(1, 9) = s
Exit For
End If
Next
Next
End If
Next
I would like this to change so that it only identifies and changes the value on one worksheet - titled 'total'.
I have a excel file with more than 10 sheets and every sheet has a title on its first three rows.
I want to delete first three rows in all sheets except parent sheet .
This Macro works fine to copy data from multiple sheets into one master sheet, but it is also copying the formula. How can I change this Macro so that it is copying and pasting VALUE only?
Sub Combine()
Dim J As Integer
On Error Resume Next
' work through sheets
For J = 4 To Sheets.Count ' from sheet 3 to last sheet
Sheets(J).Activate ' make the sheet active
Range("A10").Select
Selection.CurrentRegion.Select ' select all cells in this sheets
' select all lines except title
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select
' copy cells selected in the new sheet on last line
Selection.Copy Destination:=Sheets("Combined").Range("A65536").End(xlUp)(2)
Next
End Sub
I have 20 excel files each having more that 1000 records, the format and header for all the files are same.
I need to consolidate all these 20 different files into one excel sheet, having only one header row at the top. Since I need to perform this step frequently, I am planning to automate it.
Well this excel workbook has lots of sheets each for a specific region eg, Europe, austin etc and also sheets which have relevant data that gets used in the formula.
Now, say for eg lets considered the sheet called austin.
it does the calculations on the headcount needed for call center.
so the columns refer to a formula called gets() which then calls the erlanc function.
Now the problem here is this gets() function takes a value called calc
and this calc just a cell in one of the sheets called table. Now if I change the headcount value in the austin sheet nothing happens. Then I need to change the value of calc cell say make it to 5 or 6 and hit enter. It starts calulating the values to forecast thye headcount, but it does so for all the sheets . so it is taking a lot of time.
how to get make it run only for one sheet.
I have this code that works where Column A and B from 12 sheets are copied to a "Complete" sheet where it is saved as a CSV file for import.
I'm fairly new at this and know this code could be simplified to loop through the 12 sheets instead of copying the code 12x!!
I've copied the code for the 1st 2 sheets:
Sheets("Sheet1").Select
For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
OutSH.Cells(1, outcol).Value = Cells(i, 1).Value
OutSH.Cells(2, outcol).Value = Cells(i, 2).Value
OutSH.Cells(2, outcol + 1).Value = Cells(i, 3).Value
outcol = outcol + 1
[Code] ......
computer just doesn't have the horsepower to run all of the sheets and the formulas and put them together on one sheet in the same workbook.
I was wondering if it would be possible to take the identically arranged sheets from one book and paste the VALUES over to One page in another book.
I'm guessing you'd need to know the directory of the workbook and the title?
Below is the macro i run to compile in to one page in same workbook: (Summary3 is an arbitrary name for the new page, HEADERS is the name of the page that holds the headers for all of the categories, 2014 URL, RAP and DB_Template are the three sheets that I don't want to copy in to this new page)
The headers are in each sheet from B2:DL2 and the data would be from B3:DL75.
I am looking for an update to the following macro that would paste all of the VALUES from each of these sheets in to a new workbook on a single page.
Sub CopyAll()
Dim ws As Worksheet
Sheets.Add.Name = "Summary3"
Sheets("Summary3").rows(1).value = Sheets("Headers").rows(1).value
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
If ws.Name <> "2014 URL" And ws.Name <> "RAP" And ws.Name <> "DB_Template" And ws.Name <> "Summary" Then
Range("B2:DL75").Copy Sheets("Summary3").Range("B" & Rows.count).End(3)(2)
End If
Next ws
End Sub
I want to create a macro that will allow me to copy a specific area or dataset of one sheet to all of the other sheets within a workbook. For example, on my first sheet, i want to copy A1:C3. I want that information to show up on all the other sheets in A1:C3.
View 2 Replies View Related