code to pass a range say (A1:A3) as an arguement among other arguements to a custom function and then reading this as an array inside the custom funtion
I have a worksheet with 7 columns and I would like to read this into a 2d array. The worksheet can have as much as 50k rows.
1) is it possible to read 50k rows into a 2d array? 2) is it more efficient to read data into an array for access/manipulation as opposed to a worksheet? 3) can someone show me how to read in a worksheet with 7 cols to a 2d array?
I have a workbook with about 700 rows and about 40 records on each row. about 2-7 a day of these. The procedure I currently use a loop for does 2 different things.
1 I collect only a few of the records from the line and place them in a separate sheet .I collect the individual data, identify the ID ( cell F) and then search for the corresponding ID on a nother sheet when I do find it I add the info to the sheet on the last + next row. (I sort later)
2 I collect the entire row and place it on yet a nother sheet. The whole row has information that is categorised by the content of Cell A (name) so I copy the row and paste it into a separate sheet.
What I would idealy like to do is to copy the entire source sheet into an array once, and then copy the data into each target sheet using a loop to get each record from the array. Using only 1 loop to first read the separate data from the " array row" and place it into the first target sheet (procedure 1) and then switch the workbook and copy the whole "array row" into the target sheet there (procedure 2).
At the moment I read info on 1 row switch to the target sheet and place the information there, then I "copy" the row and switch to the next workbook and paste it there then I go back to the source and do the next row.
Obviously Im no programer and that was the best way of doing what I didnt know how to do better .
Is there a way that a whole row can be stored in an array and then 'copied' onto another row on a nother sheet without reading in the individual cells into separate elements. That would be the worse case scenario but a much faster way of doing what I curently have.
I am trying to create a "macro" that will read values from one workbook into an array based on a key field. If the key isn't present the cells data is not to be stored. After the records are stored i want to test them agains a range in a differnt workbook. If the data compared matches a stored value, leave it alone. If there is no match, a cell needs to be added with a value stating a differnce.
Like i stated i am new at this and have no clue how to compare an data array to a field. Let alone read the values into the array.
I made the formula work great, however I want to cut it down and simplify it and make it easier to manipulate... as opposed to having the filename written every so many times.. replace with a loop instead.... so:
Private Sub Weeklytestt_Click() Dim varCurDate As String If DateYesterday.Value = True Then Answer = "1" If DateToday.Value = True Then Answer = "2" If DateTyped.Value = True Then Answer = "3"
Select Case Answer Case Is = "1" varCurDate = Format(Date, "yyyymmdd") varCurDate = varCurDate - 1 Case Is = "2" varCurDate = Format(Date, "yyyymmdd")..........
I do hav a sheet in which i do hav some column;s n data
Worktype Metrics April May June
in work type few rows are hidden which i don't need what i need is i want to populate only comman metrics in other range named metrics i had build a macro for this and that's working fine but the problem is it also reads metrics from hidden rows too. i had tried a loop in which i had placed as hidden column property condition.
how do i set the macro to read a range without limitation?
currently i have a recording macro that only reads to P126 - if i end there data in C127:N127 I would like the macro to recognized that there is new data and update to P127 with the new calculation....
I'm trying to open a file on a network drive...but I'm getting the following error message when it opens: "This file may be read-only, or you may be trying to access a read-only location. Or the server the document is stored on may not be responding." Now, the file itself has no rights restrictions and is not read only. It doesn't appear to be locked.
Now, there are other Excel files in the same directory which I could open fine; however, the Excel documents having the above problem all have a little black icon "appears to be a padlock" (image attached) at the bottom left hand side of the Excel file icon. I tried the following:
- Renaming - Converting to a different file format (didn't work, it won't let me) - Opening in notepad...etc doesn't work.
This file is dated back in 2004...do you think it's corrupt? Is there anything i can do to open or recover this?
I need to read or clear all the line in specific range which will be increasing dynamically. Problem is "Selected File List" table range is not specified. New file chosen with browse will be added to "Selected File List" dynamically. Number of file can't be predicted.
vbaStk.JPG
What I've tried so far is, keep track of the browse button click and add the file path to arraylist. After that, (Row number 9 which is start line + arraylist size) to get the number of line of end of the table. But due to some requirement, I want to read the file from excel file. Something like -Read until found blank line or border bottom or something.
I'm new to VBA and I'm not so sure what I'm doing with vba codes
I have data in a spreadsheet that I would like to send to another sheet as follows:
Use the values in the range $D$2:$D$12 and $F$2:$F$12 to reference the column and row of a cell and the values in the range $G$2:$G$12 to reference a specific group of cells on another sheet into which would be inserted the value found in the range $C$2:$C$12. The best I have come up with is to place a formula in each of the cells in the second sheet that would state:
IF a value in the range $D$2:$D$12 matches the column # of the current cell AND IF the corresponding value in the range $F$2:$F$12 matches the row # of the current cell AND IF the corresponding value in the range $G$2:$G$12 matches the region of the current cell THEN the value of the current cell EQUALS the value of the corresponding cell in the range $C$2:$C$12.
I think this will work but I don’t have enough knowledge of Excel to write this formula.
Hi all, starting this as a new problem because it's so far different from what I was originally talking about; but this does relate in part to my previous thread.
Anyway. I'm trying to set an array to set Range objects so that I can define each one as a seperate With block. Here's what I "know" when starting out.
I developed the following. I keep thinking it should be multidimensional but my sleep deprived brain came up with this instead. The problem is, it's throwing a 1004 Method "Range of object '_Worksheet'" failed at the With statement.
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.
Through VBA is it possible to give a range of cells that should be converted to array formulas? As part of my macro I am copying a sheet from one book to another. This sheet contains a lot of formulas and so as not to keep the reference of the old book I find and replace "=" with "#" and then swap them back after the move. This works fine for all normal formulas but not the Array formulas.
If someone could tell me how to give and range and convert them all to arrays or can think of a better method of moving a sheet from one book to another without the formulas keeping the references to old book.
I have created several functions in VBA that operate on arrays created by other functions in VBA, however they don't recognize cell ranges as arrays. For example, the UBound function doesn't work with a range argument within my function.
How can I get my functions to recognize cell ranges as arrays, as well as arrays that I have created directly in VBA?
I am trying to set an Array to prompt user with a series of questions and input answers into a specific row. However, I want to skip over certain columns and leave those blank. How would I modify my code to do this?
Code:
Private Sub CommandButton2_Click() Dim ArrQues() As Variant Dim ArrInput(2) As Variant Dim lngLstRow As Long Dim strPNfromSales As String ArrQues = Array("Enter the Part Number.", _ "Quantity Being Returned?", _ "What is the Reason for Rejection?") For b = LBound(ArrQues) To UBound
[Code]...
I want the first two questions to be input into Column B & C, but then the third question to be input into column I.
I have a quick question in relation to filling a range with an array.
When I use the following code:
Code: Sub justdoit() s = Array(1, 2, 3) Range("A1:C1") = s End Sub
It works fine. but when I try to populate the range in rows instead of colums, the array value stays as the first value.
Code: Sub justdoit() s = Array(1, 2, 3) Range("A1:A3") = s End Sub
I'm experimenting with arrays and would like to get better at them, but this has me stumped for the moment. How to get the values to work going down, like they do going across.
The above code is a small sample of data, I am wating to replicate with using over 80K lines and cell by cell is too slow.
Code: myRange = Range(Cells(5, 18), Cells(dRow, 30)) For Each cell In myRange If IsError(cell) Then cell = "" Else cell = Round(cell, 3) End If Next cell Range(Cells(5, 18), Cells(dRow, 30))= myRange
The problem is that the range does not change after I paste modified array back to it.
In a worksheet is a table: a b c d e f g h i j h l m n o p q r s t
I'm looking for a procedure to (with the help of an array) reproduce this table exactly under the original one with one row between them but in the folowing form:
q m i e a r n j f b s o h g c t p l h d
the procedure should be applicable on any haphazard regardless of its place on a worksheet
I would like to fullfil a range a cell with different strings. As the cells are jointed to each others, I would like to pass the string array to the range and not to pass each string to each cell, to spend time.
I mean, with the function
Dim stTxt(3) As String range(Cells(1,1),Cells(3,1)).value=stTxt()
But I have some difficulties with this function: -if the range is a column, the function works, but if the range is a row, then only the first value of the array is passed, and to all the cells of the range -I didn't manage to use this function when using
Range(Cells(x,y),Cells(z,t))
and when the range is in another worksheet. I need to use
Cells(x,y).resize(z-x,t-y)
(I'm using Excel 2000).
how I can pass correctly my string array to a row of cells? (cf 1. point).
Is there a limit to the size of an array that can be transposed in Excel '97? The following works with an array size of 1000 by 4 but not 2000 by 4
Dim arrDetail() As Variant Dim i As Long, Dim counter As Long counter = 1 For i = 1 To 2000 If a certain condition Then Redim Preserve arrDetail(1 To 4, 1 To counter) arrDetail(1, i) = "string" & Rnd(i) arrDetail(2, i) = i arrDetail(3, i) = Cells(i, 1).Address arrDetail(4, i) = IIf(i Mod 2 = 0, True, False) counter = counter + 1 End If Next i Range(Cells(1,1), Cells(counter,4)) = Application.Transpose(arrDetail)...........
I have a list of values in a column that I want to enter into an array. The values are linked from a database and as such the number of values that are in the column can change. At the moment I am populating the array using the code below. I have made the array much larger than it needs to be to accommodate for the possiblity of more data being entered into the database and my loop also accounts for this by adding extra values into the array. Just wondering if there was a more efficient way to
a) Dimension the array and b) Populate the array so that only the data I need is entered into the array
Dim ClassArray(40) As String 'Save Classes as an array For j = 0 To 39 ClassArray(j) = SourceWB. Sheets("HMI Class"). Cells(j - 2, 1).Value