Copying Column With VBA Takes Forever
Feb 8, 2010The workbook has two sheets, "user" and "analysis". I have this code in a button sub:
View 2 RepliesThe workbook has two sheets, "user" and "analysis". I have this code in a button sub:
View 2 RepliesI have a formula as follows:- =COUNTIF(C$2:C2,C2)
The problem is I have to fire it down 35,000 rows and it takes forever and freezes the PC. Is there a VBA code that will do it quicker or do I have to put up with it?
I have 3 subs.
The 1st sub populates a series of sheets with data present in a master sheet called Overall. I'm using ADO because it's fast...
The 2nd sub loops through a range of criteria (also happen to be sheet names) and autofilters a range using the array items as the criteria. The filtered rows are then deleted (excluding headers).
The 3rd sub simply runs 1 and 2.
The 1st sub completes almost instantly.
The 2nd sub is also darn quick if I run it BEFORE the 1st (which is not as intended).
I have tried compliling both into a single sub and still the whole autofilter bit takes ages.
I have one data tab which constantly changes. (adding more products and corresponding volume/prices) For the lookup tab, I want to look up one value and return multiple values.
I have figured out an index array formula but it just calculates so slowly. My live file is about 8MB now. When I apply my formula, it takes forever to save.
I attached an example excel sheet. I tried to figure out but could not get a way. I need a formula which takes the value in D2, search it in column A, if the value is in the list, type the corresponding result in E2.
View 7 Replies View RelatedI am trying to make a excel sheet in which i will first keep a big database of data which will have following columns
1. Serial no.
2. Product
3. Price
and there will be a different sheet where if i select a serial No from the dropdown , the product and price corresponding to the serial no will come automatically beside it in the same row.
I'm trying to create a formula that takes from "Manual" Sheet the number from colume G2 and multiply it by the percentage in sheet "AllocationRule".
My formula currently is =Manual!$G$2*AllocationRule!$B5.
What needs to happen is that the total number in "Manual" needs to be distributed evenly in 4 rows by the percentages allocated in "AllocationRule".
Right now I can't copy my formula over to the sheet because the "AllocationRule" should stop at B5 and not go further and the G2 from "Manual" should not change for the percentage allocation but should change to the next row for the next month.
And then after I've done the calculation I want the LOB in "AllocationRule" to be displayed in the LOB in "H1913_H1914" but I'm not sure what formula to use.
I am running software that calls an Excel macro using DDE. The macro populates a sheet with information to be printed, then prints the sheet.
I would like for this to take place in the background with Excel never taking focus from the software that calls the Excel macro. Currently Excel some times takes focus from the software and some times does not. The macro also takes the information it prints and stores it to another sheet, but I don't think that's the culprit stealing focus from the other software.
I am look for a formula that takes the value from each worksheet and enter this to a summary sheet. I do not what to use formula = then press the enter key when you have select the cell with value in.
View 1 Replies View Relatedi have a workbook that is only 345kb in size it takes ages to open and although it has lookups and retrieves data from the web it just seems like it shouldnt be so slow
i also keep getting a message at the bottom like this:-
calculating (1 processor ) thena %
I have a workbook with a bunch of VB code in it.
I have this workbook and any other workbook open, but this workbook is not active. I click the X to shut down Excel. It calls the Workbook_BeforeClose event, then asks if I want to save my work (as it should). I select "Save All" and the shut down is aborted.
It never makes it to the Workbook_BeforeSave event.
I then click the X a second time, and I'm not prompted to save but the shut down proceeds with saving all and then closing Excel.
==> Why does it require a second click of the X?
If this workbook is active, all works fine.
I've commented out all event code. Didn't help.
I've deleted my commandbar menu before attempting to close.
The order in which the workbooks were opened doesn't matter.
What might I be doing in VB to cause this behavior?
This code is taking way too long to display the actions that it executes. It didn’t used to be that way. I was wondering if anyone knows why this may be. The Excel file is large – over 8 MB.
Private Sub Worksheet_Change(ByVal Target As Range)
Const WS_RANGE As String = "N:N"
Dim Cmnt
On Error Goto ws_exit:
Application.EnableEvents = False
If Not Intersect(Target, Me.Range(WS_RANGE)) Is Nothing Then
With Target
If .Row > 3 Then
If Me.Cells(.Row, "N").Value = "" Or Me.Cells(.Row, "N").Value = "O" Or Me.Cells(.Row, "N").Value = "H" Then
Me.Cells(.Row, "A").Resize(, 26).Interior.ColorIndex = 0
End If
If Me.Cells(.Row, "N").Value = "C" And Me.Cells(.Row, "O").Value = "DR" Then
Me.Cells(.Row, "A").Resize(, 26).Interior.ColorIndex = 39
End If
If Me.Cells(.Row, "N").Value = "C" And Me.Cells(.Row, "O").Value = "HJB" Then
Me.Cells(.Row, "A").Resize(, 26).Interior.ColorIndex = 6
End If.....................................
In the attached spreadsheet, I am trying to drag the formula from one column to the next but I need the same cells to be used in every column with the exception of one cell. For instance, the formula I want to use is in the cell highlighted yellow. In the next cell over (highlighted blue) I want the formula to use the same D and E cells with the only change being the first part of each (G). Both the blue and yellow cell represent what I want to do. For example, the next column (H) would have (H4+D4+E4) in the first part. Column I would have (I4+D4+E4), and so on.
The D and E columns will be in every equation for each column. The problem is that excel wants to use the next column over instead of keeping D and E in each. How do I drag these equations so that it just changes the first part and keeps the D and E columns the same?
I need a macro that will special paste from column G line 4 and down, to column C line 4 and down, and then clear column E line 4 and down.
View 9 Replies View RelatedI have recorded 7 different macros and then combined them all into one macro to achieve one end result. I am not sure if you can just look at the codes to determine different ways to improve them or if you need the excel spreadsheet as well.
View 2 Replies View RelatedI have this one query though in regards to loops.
I am trying to create a macro that can take the average of the the first 24 cells within a sheet, place the answer onto a cell in the next sheet (e.g. sheet2 in cell A1), then go back to the previous sheet, take the average of the next 24 cells within the sheet and paste the average of this new set in A2. I want to create a loop that will do this 365 times.
I have only managed to create the following code, however its only obtainning the average for the first set of 24 cells starting from B6 in sheet 1. I dont know how to use offsets that well....
VB:
Sub Oval1_Click()
For i = 1 To 365
Sheets("H1 - Riser Turret pressure").Select
Range("B4").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(Sheet1!R[2]C:R[25]C)"
Range("B4").Offset(1, 0).Select
Next i
End Sub
Basically I need a formula that takes into effect many variables. It needs to check a size, thickness, and material, to determine a cost...
1.5 O.D. - 16GA - 304SS = $X
but
1.5 O.D. - 18 GA - 304SS = $Y
and such.
The problem I have is not only am I not understanding a lot of Excel jargon, the data set is not in perfect "example" conditions.
O.D. is in N:N yet there are blanks between N(x) and N(y), GA is in O:O yet blanks between O(a) and O(b), and so on.
Here is what I have at the moment, it uses a second sheet to derive the cost based on the parameters. Please ignore the first few terms, they are used with this cost lookup to give me my final. There also may be incorrect syntax in this, but since I get a nesting error first, I really don't know.
=V7+(Q7*M7*(IF(N7=2=AND(O7=20)=AND(L7=304),’Steel Tube Cost WIP’!$DD$19,IF(N7=2=AND(O7=20)=AND(L7=316),’SteelTubeCostWIP’!$DD$20,IF(N7=2=AND(O7=20)=AND(L7=2205),
’SteelTubeCostWIP’!$DD$21,IF(N7=2=AND(O7=18)=AND(L7=304),’Steel Tube Cost WIP’!$DD$16,IF(N7=2=AND(O7=18)=AND(L7=316),’SteelTubeCostWIP’!$DD$17,IF(N7=2=AND(O7=18)=AND(L7=2205),
’SteelTubeCostWIP’!$DD$18,IF(N7=2=AND(O7=16)=AND(L7=304),’Steel Tube Cost
[Code] ......
Mentioning LOOKUP, can I even use it? I've attempted many times however it isn't going too well What can I do?
I want to obtain from some elements the number of cells it takes to appear:
We have for example A,B,C, and D,
and they appear in the next order:
1A
2C
3D
4A
5D
6B
7C
8A
9A
What I want to know is how much last in appear each element.
1A1
2C2
3D3
4A3
5D2
6B6
7C5
8A4
9A1
For example, the first “A” last one in appear, but the next element “C” last two in appear. In the forth line again cames the “A”, then are three cells. The “C” was in the cell2, and cames again in the seventh cell, then it takes five cells. In the cells eight and nine are two “A”, then in the cell nine takes one cell in appear again.
Any code I can stick into the end (plus maybe start) of a macro to display the length of time it took for the macro to run?
View 9 Replies View RelatedI plan to place a drop down list (combo box) in a WS where I upon selection of one item from that list will move me to the place in the same WS where the item selected is to be found. Hyperlinks are a theory, but the WS is protected and will stay protected. A drop down is preferred.
I haven't worked with this topics for quite some time and might have forgotten some basics.
I have a cell, lets call it A1, w/ an IF statement referencing another cell, which is a function of two values taken from RTD. A1 is either blank or reads "One." I want another cell to tally the # of times that A1 takes on the value "One."
The issue:
I've tried approaching this by using Worksheet_calculate and an IF/Then statement to add 1 each time Range("A1") = "One" however this doesn't work because it keeps adding 1 while A1 reads "One." The calculations seem to fire off every milisecond, so if "One" flashes for 0.5 seconds, I get 500, and if it flashes for 3 seconds, I get 3000. For both cases, I'd like it to just add 1.
I've done quite a bit of searching in the forum and online and haven't found anything that's generic and can be used at anytime.
What I'm looking for is a way or for code that tells you how long it takes a macro to run from start to finish, something that can be used to time any macro. I've seen some threads in the forum where people indicate that it took x amount of seconds for their macro to run but not sure how to do it.
Here it goes, my worksheet has multiple data (numbers) that are distributed like this :
Column L Column AColumn B
75,36-6,73 30,74
74,75-6,68 30,76
50,7 15,0519,55
49,3115,5219,94
69,44-8,28 36,3
68,41-8,31 37,03
47,4917,5 18,75
46,5617,7 19,39
71,07-6,38 35,99
70,05-6,42 36,84
44,2523,0418,24
42,8823,7 19,25
68,65-2,4 34,39
67,75-2,35 34,84
There are about 200 rows with values, I need to copy the numbers frow row 1 that are 75,36 -6,73 30,74 ,then in row 5 they are 69,44 -8,28 36,3...etc.
So the point is I have to copy every 4-th row with values in a nearby column. Of course I've tried the Ctrl + left click for every 4 rows then copy/paste it, but I was wandering is there a faster way??
What VBA code will copy column A in Sheet 1 to column B in Sheet 3? The range of column A to be copied begins in row 2 and varies in length. Column A ends right before the last nonblank cell.
I want the row in one worksheet to contain the data in the column of another worksheet. For example, Column C in the "Agency" worksheet contains the acronyms for 57 agencies. I want populate ROW 3 in the "Child" worksheet with those acronyms without having to enter a unique "='AGENCY'!C..." formula in each cell of Row 3. How can I do this?
View 3 Replies View RelatedAt the moment I have data in column A that I would like to move over to columns B, C, D, E, F, G and H. I need to do it for the whole sheet (60,000 rows), but the data isn't evenly spaced so I'm making a bit of a mess trying.
Here are a couple of examples of what I am trying to do.
Example 1: Data on the left
Example 2: How I want the spreadhsheet to look
Example 3: What happens when I copy and paste the row 3 columns b-H
http://i41.photobucket.com/albums/e2.../Example_1.jpg
http://i41.photobucket.com/albums/e2.../Example_2.jpg
http://i41.photobucket.com/albums/e2.../Example_3.jpg
I've been messing around with formulas like: if column A = the word CD, put the contents of the cell in this cell. I'm not that clever though! I know it can be done and it's annoying me not being able to do it.
I have a very long if function that takes a value froma cell and then totals the row up to that point.... Is it possible to make this shorter? I have tried to put a sum function in there but that also comes with the nested functions have been exceeded error message...
=IF($S$8=12,P11+O11+N11+M11+L11+K11+J11+I11+H11+G11+F11+E11,IF($S$8=11,O11+N11+M11+L11+K11+J11+I11+H 11+G11+F11+E11,IF($S$8=10,N11+M11+L11+K11+J11+I11+H11+G11+F11+E11,IF($S$8=9,M11+L11+K11+J11+I11+H11+ G11+F11+E11,IF($S$8=8,L11+K11+J11+I11+H11+G11+F11+E11,IF($S$8=7,K11+J11+I11+H11+G11+F11+E11,IF($S$8= 6,J11+I11+H11+G11+F11+E11,IF($S$8=5,I11+H11+G11+F11+E1,))))))))
This one stops short, as it should continue down to $s$8=1.
[URL]
Excel takes about 10 minutes in the saving process. When I say 10 minutes, I mean, the excel screen freezes (says not responding) for about 10 minutes, then it actually saves at the very end in the normal time any other file would take as you watch the progress bar go forward.
I know many of the common answers and have tried. reducing the calculation time (which in turn reduces the saving time).
But in my circumstance, the calculation takes a very reasonable amount of time, and you see the progress % going forward.
- I would say I have about 2000 rows, and 15 columns.
- They have sumifs formulas.
- They link to a different workbook.
- The workbook I am working on saves to the network
- the source of my sumifs are also in the same folder on the network
- the recalculation takes about 10 seconds at most
- i have turned off recalculate before saving, it is all on manual calcs
- when i hit save, there are no calcs being performed
- there are no macros in the workbook
- there are only about 2 names in the name manager
- then it freezes for about 10 minutes.
- then the progress bar starts moving then it saves.
What is it doing in those 10 minutes?
1 more item to note, when I break the links to the workbook and thereby removing the sumifs formulas, its a snap.
Why does the existence of the sumifs extend saving time? I would completely understand if it elongated calculation time, but if calculation is off, then why does it even worry about it when saving?
I delcare an array of dates and assign it with a function that returns an array of dates. Then I want to pass the result to a sub which takes an array of dates as a parameter. However, I am getting a type mismatch error on this line
View 2 Replies View RelatedI am using the below formula to distinctly count the number of customers that match the criteria that I have in Cells C7 and B10. The data is in a separate worksheet, that I am showing Named Detail of which will be changing on a monthly basis, so a pivot table does not want to be used. The detail data ranges from row 7-40,000, and the file is currently 8610KB's, and can potentially grow.
=SUM(IF(FREQUENCY(IF(Detail!$A$7:$A$40000=C$7,IF(Detail!$B$7:$B$40000=$B10,IF(Detail!$D$7:$D$40000<> "",MATCH(Detail!$D$7:$D$40000,Detail!$D$7:$D$40000,0)))),ROW(Cust)-MIN(ROW(Detail!$D$7:$D$40000))+1),1))
This formula works but takes an excessive amount of time for one caluclation, and I need this for multiple column and row critera. So, can this calculation be changed in order to get the same result with faster calculation time? I am using Excel 2003.