I have a spreadsheet which is going to be populated everyday from figures from another spreadsheet using autofilters and the very useful SubTotal worksheet function. I'll attach a copy of the work in progress, also there will be a macro in here which Everytime the user presses update, it copies a range of cells and formatting and pastes it to the next available cell on the right. I've also drawn the movement of the cells i'd like The reason being, is that its going to give day to day, up to date figures from a datasheet.
The problem i have is that when i come to populate the grid which has been copied, i need a calculations to populate each cell in the Less<1week column, then when it gets to the bottom, move Back to the top, and accross to the right 1, and then populate down again, and so on until the end of the grid in question, i dont think i can use a for/next loop becuase it will be a different column address everytime. I dont really like loops, but i feel this needs it.
I now have everything set up to do exactly what I want except this last bit.
All I want is for the overview page to show the top three referrers for each month. At the moment, it's finding the top and bottom 'scorer' but if more than one has the same score I can only see the first alphabetically.
I have data arranged in cells A1 to Z1 as Name1, Amount1, Name2, Amount2, Name3, Amount3, etc. Is there a formula that can determine the name that corresponds to the maximum amount in the row?
I'm trying to figure out why i'm getting this error: "Object variable or With block variable not set" for this
Sub Macro3() Dim cel As Range Dim str1 As String Dim SearchThing As Range Set SearchThing = ActiveSheet.Range("I34") str1 = Left(SearchThing.Value, Len(SearchThing) - 4) cel.Value = str1 End Sub
I have a 2010 excel sheet containing 14 columns and 45082 rows in total. I am quite illiterate when it comes to writing macros but I know that what I need can be achieved with a set of codes.
To be more clear, I inserted two tables below. The first one represents the current data structure, and the second one is the way I want my data to look like.
Current data structure looks like Variable 1 Variable 2 Variable 3
I have a range selected (A4:C15).I would like to deselect the range and make A4 the active cell. Is this possible without a macro?
With a macro, one could use: Application.Goto Selection.Cells(1)
I generally select a large number of cells and would like to go back to the start cell in the range. I could do it by pressing the left and right arrow keys but is there a shortcut that will allow me to do the same?
I copy information from one worksheet to another. Now i specify the range to copy in the macro. What i need is for the macro to find the end (last row) of data and than copy everything from row 5 to last row.
The below is a macro i currently use:
Sub Import_FNGC() Const TARGET_FILENAME = "2008.xls" ' ' import_FNGC Macro ' Macro recorded 1/30/2008 by wwrobel '
' myMSG = "This will clear the data and import information. Do you want to continue?" Response = MsgBox(myMSG, vbExclamation + vbYesNo, myTitle) Select Case Response Case Is = vbYes Range("A5:BM100").Select............
I understand how to find the top 5 /bottom 5 values using the large/small functions, but the question I have is: How do I get associated fields. For example I attached a sample sheet with values (Fields: Ticker,TE,Sector,Return). How do I get the Ticker,Sector that the return is for. I'd like to show all the associated fields that relate to the retun, but I can't find the solution on how to do that.
I tend to use a lot of For Each loops when I want to go through a range looking for something but this time I'm not so sure it will work.
I have 9 databases each containing over 400 rows with different pieces of client information, these databases are shared between around 40 people (I've also used the 'Allow users to edit ranges' utility to restrict access). What this means however is that the users cannot delete an entire row, instead they can only 'clear contents' on individual cells. This is fine until I try to generate statistics from the databases using autofilters which stop at the first blank row.
So I need to write a backwards for each statement that starts at the bottom and deletes all the blank rows on the way up to the top. I've tried similar things to this before using the For Each but when you use it to delete a row it sometimes skips the next row as it continues at the next one.
I've not managed to get it to work before, I'm just looking for a little guidance really as to how to do this correctly.
VB: For TopRow = 1 To BottomRow = Range("A1").SpecialCells(xlCellTypeLastCell).Row Step -1 'If is blank delete row..... Next
How can I determine what the bottom row is in a range in VBA? I have an SheetChange event sub that takes in Target as Range. I want to know what the first/last row/column is in the Range. So, for example, say the Sheet has values in A1:B5 and I paste over A1:B4. Target will be A1:B4. I need a method that returns 4. I tried Target.End(xldown).row, but that gives me 5 (since theres data in A5).
I've recorded a macro that selects a bunch of cells so I can work with them. However, it's hard-coded to the bottom cell of H1551, and I need it to work no matter how large the range is.
Code: ''' Concatenate column H with B & F Application.Goto Reference:="R2C8" ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-6],"" "",RC[-2])"
Obscure lines of info which I'm trying to break up into pieces. Being able to find from the right instead of left would be REALLY handy. See attached example with details and example!
I have a list of players and the team they play for in Columns A and B.
In column E I have created a list of only unique names and in F I need the Team the played for last. However with Vlookup I am only getting the team they played for first. How can I get the team they played for last?
I have tried vlookup and index/match and get the same.
This is a win/loss ratio so to have it as a percentage I would have to divide the first number by the sum of the two numbers so 78/114 = 68.4% How would you do this with a formula?
I came up with this that isn't quite right, because RIGHT and FIND don't work together.
=LEFT(A1,FIND("-",A1,1)-1)/(LEFT(A1,FIND("-",A1,1)-1)+RIGHT(A1,FIND("-",A1,1)-1)) There must be a smarter way of doing this. TY
The following code is doing what I want it to do in part, its copying the data in range k3 to q3 to the next empty row in columns a to f
It works when I change any cell in column K (11), I want to change to only on a change in K7 or K8? As an afterthought if I'm dealing with the same sheet do I need to make reference to sheet2?
VB: Private Sub Worksheet_Change(ByVal Target As Range) Dim nextRow As Long If Target.Column = 11 And Target.Cells.Count = 1 Then
Data consists of a series of ranges from columns A:N and rows varying in number between 3 and 30.
There are two blank lines between each range of data.
Each range is (with exception) numerically ordered down column H (e.g, 1, 2, 3, etc).
Problem: there are around 1100 occasions when a range contains a row of data which is to be disqualified from consideration. On these occasions the data always appears in the top row of the range and is identifiable in column H by the nine codes 111, 222, 333, 444, 555, 666, 777, 888, and 999).
I wish to find a macro which will :
1. where the top row of a range in column H is one of the codes 111 to 999, transfer that row of data to the bottom of the range.
2. delete the now empty top row from which the transfer was made from.
3. insert a new blank row at the bottom of the range below the row which the data was transferred to (in order to maintain the two blank rows above and below each range).
I was wondering if there was a way to create a two cell dynamic range that doesn't expand, but instead shifts.
The cells that I'm interested in are always at the bottom of the column of data. For example, the first two cells I want as my range are C13 and D13. Then, for my next use of the range, I would like it to include C14 and D14.
I am compiling a database of tennis stats for various players. I input the set scores (like 6-4) and I then need excel to find "-", go to the left and right, and add up all cells containing these scores on a full row.
For example:
6-4, 6-4, 6-4 would become 18-12
I can do this by using "find" and left/right. The problem is, the more records I add, the more I have to keep changing the formula.
[Code] .........
Is there a faster way to do this, preferably without using macros.
I need to add the SUBSTITUTE function to this but can't figure out where it goes if somebody could point me in the right direction please? My substitute formula is SUBSTITUTE(L5,"car","train").
Basically, I am trying to write a program that will index match through a range and if it doesn't find the value that it is matching to, it will add the value to the bottom of the range it is indexing against. In other words:
My C column has a list of CUSIPS. In column J, I would like for the User to be able to add a list of cusips and then have the ones that don't already exist in the list of CUSIPS in column C be added at the bottom of the range. I have written a macro now that uses the index match, but for some reason it adds all of the cusips that exist in J range to column C, not just the ones that are missing. I can provide a template if necessary.
Sub Filler() Dim Row As Variant Dim NumberOfRows As Long Row = 0
Im trying to pull together a formula to achieve the below. What i have is a spreadsheet to be used by staff in different countries so im looking to make it easy to modify the categories used without the user needing to do anything complex with formulas.
The right hand side of my file (C:E) shows a code for each year we have covered a country with the year as a prefix (2014 - Blah). The left (A:B) is a summary showing the latest year we covered that country.
Current formula: {=IF(COUNTA(C2:D2)<=0,"","✔-"&MAX(LEFT(C2:D2&"0",4)*1))}
The current formula works fine if you set the columns to where the data actually is but for ease of use i need it to look at the data in rows 1:2 and match up the Continent/Country and then MAX the dates.
I'm looking for a way to split a cell with text into two cells. The first cell can only contain up to 40 characters, the rest needs to go in the second cell. However, I don't want the text to be split in the middle of a word. So basically, if the text is in cell A1, I need to find the closest space to the left of position 40 in A1, and move anything to the right of this position to B1. Example:
Original text: A1: One green apple and a bucket of small onions that smell nice
I want to avoid this: A1: One green apple and a bucket of small on B1: ions that smell nice
I want to achieve this: A1: One green apple and a bucket of small B1: onions that smell nice
I have a column that is giving unwanted value . dont know the reason as that excel file has been created by some other guy and I just started working on it .
My Question is how to move to 2 cells left(A for example) from from that unwanted value column. and check if A is equal to cell above it , means B Cell(Row above A but same column).
As my excel file is totally based on Forms, Macros, I am not quite familiar with macros.
Is there any way to put if condition in one cell (column) and drag it all the way down which should work for all the values in these 3 column.
And also if A=B then I want to make that unwanted value cell="".