Вставка формулы со ссылками в стиле A1 и R1C1 в ячейку (диапазон) из кода VBA Excel. Свойства Range.FormulaLocal и Range.FormulaR1C1Local.
Свойство Range.FormulaLocal
FormulaLocal — это свойство объекта Range, которое возвращает или задает формулу на языке пользователя, используя ссылки в стиле A1.
В качестве примера будем использовать диапазон A1:E10, заполненный числами, которые необходимо сложить построчно и результат отобразить в столбце F:
Примеры вставки формул суммирования в ячейку F1:
Range(«F1»).FormulaLocal = «=СУММ(A1:E1)» Range(«F1»).FormulaLocal = «=СУММ(A1;B1;C1;D1;E1)» |
Пример вставки формул суммирования со ссылками в стиле A1 в диапазон F1:F10:
Sub Primer1() Dim i As Byte For i = 1 To 10 Range(«F» & i).FormulaLocal = «=СУММ(A» & i & «:E» & i & «)» Next End Sub |
В этой статье я не рассматриваю свойство Range.Formula, но если вы решите его применить для вставки формулы в ячейку, используйте англоязычные функции, а в качестве разделителей аргументов — запятые (,) вместо точек с запятой (;):
Range(«F1»).Formula = «=SUM(A1,B1,C1,D1,E1)» |
После вставки формула автоматически преобразуется в локальную (на языке пользователя).
Свойство Range.FormulaR1C1Local
FormulaR1C1Local — это свойство объекта Range, которое возвращает или задает формулу на языке пользователя, используя ссылки в стиле R1C1.
Формулы со ссылками в стиле R1C1 можно вставлять в ячейки рабочей книги Excel, в которой по умолчанию установлены ссылки в стиле A1. Вставленные ссылки в стиле R1C1 будут автоматически преобразованы в ссылки в стиле A1.
Примеры вставки формул суммирования со ссылками в стиле R1C1 в ячейку F1 (для той же таблицы):
‘Абсолютные ссылки в стиле R1C1: Range(«F1»).FormulaR1C1Local = «=СУММ(R1C1:R1C5)» Range(«F1»).FormulaR1C1Local = «=СУММ(R1C1;R1C2;R1C3;R1C4;R1C5)» ‘Ссылки в стиле R1C1, абсолютные по столбцам и относительные по строкам: Range(«F1»).FormulaR1C1Local = «=СУММ(RC1:RC5)» Range(«F1»).FormulaR1C1Local = «=СУММ(RC1;RC2;RC3;RC4;RC5)» ‘Относительные ссылки в стиле R1C1: Range(«F1»).FormulaR1C1Local = «=СУММ(RC[-5]:RC[-1])» Range(«F2»).FormulaR1C1Local = «=СУММ(RC[-5];RC[-4];RC[-3];RC[-2];RC[-1])» |
Пример вставки формул суммирования со ссылками в стиле R1C1 в диапазон F1:F10:
‘Ссылки в стиле R1C1, абсолютные по столбцам и относительные по строкам: Range(«F1:F10»).FormulaR1C1Local = «=СУММ(RC1:RC5)» ‘Относительные ссылки в стиле R1C1: Range(«F1:F10»).FormulaR1C1Local = «=СУММ(RC[-5]:RC[-1])» |
Так как формулы с относительными ссылками и относительными по строкам ссылками в стиле R1C1 для всех ячеек столбца F одинаковы, их можно вставить сразу, без использования цикла, во весь диапазон.
In this lesson you can learn how to add a formula to a cell using vba. There are several ways to insert formulas to cells automatically. We can use properties like Formula, Value and FormulaR1C1 of the Range object. This post explains five different ways to add formulas to cells.
Table of contents
How to add formula to cell using VBA
Add formula to cell and fill down using VBA
Add sum formula to cell using VBA
How to add If formula to cell using VBA
Add formula to cell with quotes using VBA
Add Vlookup formula to cell using VBA
We use formulas to calculate various things in Excel. Sometimes you may need to enter the same formula to hundreds or thousands of rows or columns only changing the row numbers or columns. For an example let’s consider this sample Excel sheet.
In this Excel sheet I have added a very simple formula to the D2 cell.
=B2+C2
So what if we want to add similar formulas for all the rows in column D. So the D3 cell will have the formula as =B3+C3 and D4 will have the formula as =B4+D4 and so on. Luckily we don’t need to type the formulas manually in all rows. There is a much easier way to do this. First select the cell containing the formula. Then take the cursor to the bottom right corner of the cell. Mouse pointer will change to a + sign. Then left click and drag the mouse until the end of the rows.
However if you want to add the same formula again and again for lots of Excel sheets then you can use a VBA macro to speed up the process. First let’s look at how to add a formula to one cell using vba.
How to add formula to cell using VBA
Lets see how we can enter above simple formula(=B2+C2) to cell D2 using VBA
In this method we are going to use the Formula property of the Range object.
Sub AddFormula_Method1()
Dim WS As Worksheet
Set WS = Worksheets(«Sheet1»)
WS.Range(«D2»).Formula = «=B2+C2»
End Sub
We can also use the Value property of the Range object to add a formula to a cell.
Sub AddFormula_Method2()
Dim WS As Worksheet
Set WS = Worksheets(«Sheet1»)
WS.Range(«D2»).Value = «=B2+C2»
End Sub
Next method is to use the FormulaR1C1 property of the Range object. There are few different ways to use FormulaR1C1 property. We can use absolute reference, relative reference or use both types of references inside the same formula.
In the absolute reference method cells are referred to using numbers. Excel sheets have numbers for each row. So you should think similarly for columns. So column A is number 1. Column B is number 2 etc. Then when writing the formula use R before the row number and C before the column number. So the cell A1 is referred to by R1C1. A2 is referred to by R2C1. B3 is referred to by R3C2 etc.
This is how you can use the absolute reference.
Sub AddFormula_Method3A()
Dim WS As Worksheet
Set WS = Worksheets(«Sheet1»)
WS.Range(«D2»).FormulaR1C1 = «=R2C2+R2C3»
End Sub
If you use the absolute reference, the formula will be added like this.
If you use the manual drag method explained above to fill down other rows, then the same formula will be copied to all the rows.
In Majority cases this is not how you want to fill down the formula. However this won’t happen in the relative method. In the relative method, cells are given numbers relative to the cell where the formula is entered. You should use negative numbers when referring to the cells in upward direction or left. Also the numbers should be placed within the square brackets. And you can omit [0] when referring to cells on the same row or column. So you can use RC[-2] instead of R[0]C[-2]. The macro recorder also generates relative reference type code, if you enter a formula to a cell while enabling the macro recorder.
Below example shows how to put formula =B2+C2 in D2 cell using relative reference method.
Sub AddFormula_Method3B()
Dim WS As Worksheet
Set WS = Worksheets(«Sheet1»)
WS.Range(«D2»).FormulaR1C1 = «=RC[-2]+RC[-1]»
End Sub
Now use the drag method to fill down all the rows.
You can see that the formulas are changed according to the row numbers.
Also you can use both relative and absolute references in the same formula. Here is a typical example where you need a formula with both reference types.
We can add the formula to calculate Total Amount like this.
Sub AddFormula_Method3C()
Dim WS As Worksheet
Set WS = Worksheets(«Sheet2»)
WS.Range(«C5»).FormulaR1C1 = «=RC[-1]+RC[-1]*R2C2»
End Sub
In this formula we have a absolute reference after the * symbol. So when we fill down the formula using the drag method that part will remain the same for all the rows. Hence we will get correct results for all the rows.
Add formula to cell and fill down using VBA
So now you’ve learnt various methods to add a formula to a cell. Next let’s look at how to fill down the other rows with the added formula using VBA.
Assume we have to calculate cell D2 value using =B2+C2 formula and fill down up to 1000 rows. First let’s see how we can modify the first method to do this. Let’s name this subroutine as “AddFormula_Method1_1000Rows”
Sub AddFormula_Method1_1000Rows()
End Sub
Then we need an additional variable for the For Next statement
Dim WS As Worksheet
Dim i As Integer
Next, assign the worksheet to WS variable
Set WS = Worksheets(«Sheet1»)
Now we can add the For Next statement like this.
For i = 2 To 1000
WS.Range(«D» & i).Formula = «=B» & i & «+C» & i
Next i
Here I have used «D» & i instead of D2 and «=B» & i & «+C» & i instead of «=B2+C2». So the formula keeps changing like =B3+C3, =B4+C4, =B5+C5 etc. when iterated through the For Next loop.
Below is the full code of the subroutine.
Sub AddFormula_Method1_1000Rows()
Dim WS As Worksheet
Dim i As Integer
Set WS = Worksheets(«Sheet1»)
For i = 2 To 1000
WS.Range(«D» & i).Formula = «=B» & i & «+C» & i
Next i
End Sub
So that’s how you can use VBA to add formulas to cells with variables.
Next example shows how to modify the absolute reference type of FormulaR1C1 method to add formulas upto 1000 rows.
Sub AddFormula_Method3A_1000Rows()
Dim WS As Worksheet
Dim i As Integer
Set WS = Worksheets(«Sheet1»)
For i = 2 To 1000
WS.Range(«D» & i).FormulaR1C1 = «=R» & i & «C2+R» & i & «C3»
Next i
End Sub
You don’t need to do any change to the formula section when modifying the relative reference type of the FormulaR1C1 method.
Sub AddFormula_Method3B_1000Rows()
Dim WS As Worksheet
Dim i As Integer
Set WS = Worksheets(«Sheet1»)
For i = 2 To 1000
WS.Range(«D» & i).FormulaR1C1 = «=RC[-2]+RC[-1]»
Next i
End Sub
Use similar techniques to modify other two types of subroutines to add formulas for multiple rows. Now you know how to add formulas to cells with a variable. Next let’s look at how to add formulas with some inbuilt functions using VBA.
How to add sum formula to a cell using VBA
Suppose we want the total of column D in the D16 cell. So this is the formula we need to create.
=SUM(D2:D15)
Now let’s see how to add this using VBA. Let’s name this subroutine as SumFormula.
First let’s declare a few variables.
Dim WS As Worksheet
Dim StartingRow As Long
Dim EndingRow As Long
Assign the worksheet to the variable.
Set WS = Worksheets(«Sheet3»)
Assign the starting row and the ending row to relevant variables.
StartingRow = 2
EndingRow = 1
Then the final step is to create the formula with the above variables.
WS.Range(«D16»).Formula = «=SUM(D» & StartingRow & «:D» & EndingRow & «)»
Below is the full code to add the Sum formula using VBA.
Sub SumFormula()
Dim WS As Worksheet
Dim StartingRow As Long
Dim EndingRow As Long
Set WS = Worksheets(«Sheet3»)
StartingRow = 2
EndingRow = 15
WS.Range(«D16»).Formula = «=SUM(D» & StartingRow & «:D» & EndingRow & «)»
End Sub
How to add If Formula to a cell using VBA
If function is a very popular inbuilt worksheet function available in Microsoft Excel. This function has 3 arguments. Two of them are optional.
Now let’s see how to add a If formula to a cell using VBA. Here is a typical example where we need a simple If function.
This is the results of students on an examination. Here we have names of students in column A and their marks in column B. Students should get “Pass” if he/she has marks equal or higher than 40. If marks are less than 40 then Excel should show the “Fail” in column C. We can simply obtain this result by adding an If function to column C. Below is the function we need in the C2 cell.
=IF(B2>=40,»Pass»,»Fail»)
Now let’s look at how to add this If Formula to a C2 cell using VBA. Once you know how to add it then you can use the For Next statement to fill the rest of the rows like we did above. We discussed a few different ways to add formulas to a range object using VBA. For this particular example I’m going to use the Formula property of the Range object.
So now let’s see how we can develop this macro. Let’s name this subroutine as “AddIfFormula”
Sub AddIfFormula()
End Sub
However we can’t simply add this If formula using the Formula property like we did before. Because this If formula has quotes inside it. So if we try to add the formula to the cell with quotes, then we get a syntax error.
Add formula to cell with quotes
There are two ways to add the formula to a cell with quotes.
Sub AddIfFormula_Method1()
Dim WS As Worksheet
Set WS = Worksheets(«Sheet4»)
WS.Range(«C2»).Formula = «=IF(B2>=40,»»Pass»»,»»Fail»»)»
End Sub
Sub AddIfFormula_Method2()
Dim WS As Worksheet
Set WS = Worksheets(«Sheet4»)
WS.Range(«C2»).Formula = «=IF(B2>=40,» & Chr(34) & «Pass» & Chr(34) & «,» & Chr(34) & «Fail» & Chr(34) & «)»
End Sub
Add vlookup formula to cell using VBA
Finally I will show you how to add a vlookup formula to a cell using VBA. So I created a very simple example where we can use a Vlookup function. Assume we have this section in the Sheet5 of the same workbook.
So here when we change the name of the student in the C2 cell, his/her pass or fail status should automatically be shown in the C3 cell. If the original data(data we used in the above “If formula” example) is listed in the Sheet4 then we can write a Vlookup formula for the C3 cell like this.
=VLOOKUP(Sheet5!C2,Sheet4!A2:C200,3,FALSE)
We can use the Formula property of the Range object to add this Vlookup formula to the C3 using VBA.
Sub AddVlookupFormula()
Dim WS As Worksheet
Set WS = Worksheets(«Sheet5»)
WS.Range(«C3»).Formula = «=VLOOKUP(Sheet5!C2,Sheet4!A2:C200,3,FALSE)»
End Sub
In this Article
- Formulas in VBA
- Macro Recorder and Cell Formulas
- VBA FormulaR1C1 Property
- Absolute References
- Relative References
- Mixed References
- VBA Formula Property
- VBA Formula Tips
- Formula With Variable
- Formula Quotations
- Assign Cell Formula to String Variable
- Different Ways to Add Formulas to a Cell
- Refresh Formulas
This tutorial will teach you how to create cell formulas using VBA.
Formulas in VBA
Using VBA, you can write formulas directly to Ranges or Cells in Excel. It looks like this:
Sub Formula_Example()
'Assign a hard-coded formula to a single cell
Range("b3").Formula = "=b1+b2"
'Assign a flexible formula to a range of cells
Range("d1:d100").FormulaR1C1 = "=RC2+RC3"
End Sub
There are two Range properties you will need to know:
- .Formula – Creates an exact formula (hard-coded cell references). Good for adding a formula to a single cell.
- .FormulaR1C1 – Creates a flexible formula. Good for adding formulas to a range of cells where cell references should change.
For simple formulas, it’s fine to use the .Formula Property. However, for everything else, we recommend using the Macro Recorder…
Macro Recorder and Cell Formulas
The Macro Recorder is our go-to tool for writing cell formulas with VBA. You can simply:
- Start recording
- Type the formula (with relative / absolute references as needed) into the cell & press enter
- Stop recording
- Open VBA and review the formula, adapting as needed and copying+pasting the code where needed.
I find it’s much easier to enter a formula into a cell than to type the corresponding formula in VBA.
Notice a couple of things:
- The Macro Recorder will always use the .FormulaR1C1 property
- The Macro Recorder recognizes Absolute vs. Relative Cell References
VBA FormulaR1C1 Property
The FormulaR1C1 property uses R1C1-style cell referencing (as opposed to the standard A1-style you are accustomed to seeing in Excel).
Here are some examples:
Sub FormulaR1C1_Examples()
'Reference D5 (Absolute)
'=$D$5
Range("a1").FormulaR1C1 = "=R5C4"
'Reference D5 (Relative) from cell A1
'=D5
Range("a1").FormulaR1C1 = "=R[4]C[3]"
'Reference D5 (Absolute Row, Relative Column) from cell A1
'=D$5
Range("a1").FormulaR1C1 = "=R5C[3]"
'Reference D5 (Relative Row, Absolute Column) from cell A1
'=$D5
Range("a1").FormulaR1C1 = "=R[4]C4"
End Sub
Notice that the R1C1-style cell referencing allows you to set absolute or relative references.
Absolute References
In standard A1 notation an absolute reference looks like this: “=$C$2”. In R1C1 notation it looks like this: “=R2C3”.
To create an Absolute cell reference using R1C1-style type:
- R + Row number
- C + Column number
Example: R2C3 would represent cell $C$2 (C is the 3rd column).
'Reference D5 (Absolute)
'=$D$5
Range("a1").FormulaR1C1 = "=R5C4"
Relative References
Relative cell references are cell references that “move” when the formula is moved.
In standard A1 notation they look like this: “=C2”. In R1C1 notation, you use brackets [] to offset the cell reference from the current cell.
Example: Entering formula “=R[1]C[1]” in cell B3 would reference cell D4 (the cell 1 row below and 1 column to the right of the formula cell).
Use negative numbers to reference cells above or to the left of the current cell.
'Reference D5 (Relative) from cell A1
'=D5
Range("a1").FormulaR1C1 = "=R[4]C[3]"
Mixed References
Cell references can be partially relative and partially absolute. Example:
'Reference D5 (Relative Row, Absolute Column) from cell A1
'=$D5
Range("a1").FormulaR1C1 = "=R[4]C4"
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More
VBA Formula Property
When setting formulas with the .Formula Property you will always use A1-style notation. You enter the formula just like you would in an Excel cell, except surrounded by quotations:
'Assign a hard-coded formula to a single cell
Range("b3").Formula = "=b1+b2"
VBA Formula Tips
Formula With Variable
When working with Formulas in VBA, it’s very common to want to use variables within the cell formulas. To use variables, you use & to combine the variables with the rest of the formula string. Example:
Sub Formula_Variable()
Dim colNum As Long
colNum = 4
Range("a1").FormulaR1C1 = "=R1C" & colNum & "+R2C" & colNum
End Sub
VBA Programming | Code Generator does work for you!
Formula Quotations
If you need to add a quotation (“) within a formula, enter the quotation twice (“”):
Sub Macro2()
Range("B3").FormulaR1C1 = "=TEXT(RC[-1],""mm/dd/yyyy"")"
End Sub
A single quotation (“) signifies to VBA the end of a string of text. Whereas a double quotation (“”) is treated like a quotation within the string of text.
Similarly, use 3 quotation marks (“””) to surround a string with a quotation mark (“)
MsgBox """Use 3 to surround a string with quotes"""
' This will print <"Use 3 to surround a string with quotes"> immediate window
Assign Cell Formula to String Variable
We can read the formula in a given cell or range and assign it to a string variable:
'Assign Cell Formula to Variable
Dim strFormula as String
strFormula = Range("B1").Formula
Different Ways to Add Formulas to a Cell
Here are a few more examples for how to assign a formula to a cell:
- Directly Assign Formula
- Define a String Variable Containing the Formula
- Use Variables to Create Formula
Sub MoreFormulaExamples ()
' Alternate ways to add SUM formula
' to cell B1
'
Dim strFormula as String
Dim cell as Range
dim fromRow as long, toRow as long
Set cell = Range("B1")
' Directly assigning a String
cell.Formula = "=SUM(A1:A10)"
' Storing string to a variable
' and assigning to "Formula" property
strFormula = "=SUM(A1:A10)"
cell.Formula = strFormula
' Using variables to build a string
' and assigning it to "Formula" property
fromRow = 1
toRow = 10
strFormula = "=SUM(A" & fromValue & ":A" & toValue & ")
cell.Formula = strFormula
End Sub
Refresh Formulas
As a reminder, to refresh formulas, you can use the Calculate command:
Calculate
To refresh single formula, range, or entire worksheet use .Calculate instead:
Sheets("Sheet1").Range("a1:a10").Calculate
На чтение 4 мин. Просмотров 33.1k.
Итог: ознакомьтесь с 3 советами по написанию и созданию формул в макросах VBA с помощью этой статьи и видео.
Уровень мастерства: Средний
Автоматизировать написание формул
Написание формул может быть одной из самых трудоемких частей
вашей еженедельной или ежемесячной задачи Excel. Если вы работаете над
автоматизацией этого процесса с помощью макроса, вы можете попросить VBA
написать формулу и ввести ее в ячейки.
Поначалу написание формул в VBA может быть немного сложнее,
поэтому вот три совета, которые помогут сэкономить время и упростить процесс.
Совет № 1: Свойство Formula
Свойство Formula является членом объекта Range в VBA. Мы можем использовать его для установки / создания формулы для отдельной ячейки или диапазона ячеек.
Есть несколько требований к значению формулы, которые мы устанавливаем с помощью свойства Formula:
- Формула представляет собой строку текста, заключенную в кавычки. Значение формулы должно начинаться и заканчиваться кавычками.
- Строка формулы должна начинаться со знака равенства = после первой кавычки.
Вот простой пример формулы в макросе.
Sub Formula_Property() ' Формула представляет собой строку текста, заключенную в кавычки ' Начинается со знака = Range("B10").Formula = "=SUM(B4:B9)" End Sub
Свойство Formula также можно использовать для чтения существующей формулы в ячейке.
Совет № 2: Используйте Macro Recorder
Если ваши формулы более сложные или содержат специальные
символы, их будет сложнее написать в VBA. К счастью, мы можем использовать
рекордер макросов, чтобы создать код для нас.
Вот шаги по созданию кода свойства формулы с помощью средства записи макросов.
- Включите средство записи макросов (вкладка «Разработчик»> «Запись макроса»)
- Введите формулу или отредактируйте существующую формулу.
- Нажмите Enter, чтобы ввести формулу.
- Код создается в макросе.
Если ваша формула содержит кавычки или символы амперсанда, макрос записи будет учитывать это. Он создает все подстроки и правильно упаковывает все в кавычки. Вот пример.
Sub Macro10() ' Используйте средство записи макросов для создания кода для сложных формул с ' специальны символы и относительные ссылки ActiveCell.FormulaR1C1 = "=""Total Sales: "" & TEXT(R[-5]C,""$#,###"")" End Sub
Совет № 3: Нотация формулы стиля R1C1
Если вы используете средство записи макросов для формул, вы
заметите, что он создает код со свойством FormulaR1C1.
Нотация стиля R1C1 позволяет нам создавать как относительные (A1), абсолютные ($A$1), так и смешанные ($A1, A$1) ссылки в нашем макрокоде.
R1C1 обозначает строки и столбцы.
Относительные ссылки
Для относительных ссылок мы указываем количество строк и
столбцов, которые мы хотим сместить от ячейки, в которой находится формула.
Количество строк и столбцов указывается в квадратных скобках.
Следующее создаст ссылку на ячейку, которая на 3 строки выше
и на 2 строки справа от ячейки, содержащей формулу.
Отрицательные числа идут вверх по строкам и столбцам слева.
Положительные числа идут вниз по строкам и столбцам справа.
Абсолютные ссылки
Мы также можем использовать нотацию R1C1 для абсолютных ссылок. Обычно это выглядит как $A$2.
Для абсолютных ссылок мы НЕ используем квадратные скобки. Следующее создаст прямую ссылку на ячейку $A$2, строка 2, столбец 1
При создании смешанных ссылок относительный номер строки или
столбца будет зависеть от того, в какой ячейке находится формула.
Проще всего использовать макро-рекордер, чтобы понять это.
Свойство FormulaR1C1 и свойство формулы
Свойство FormulaR1C1 считывает нотацию R1C1 и создает
правильные ссылки в ячейках. Если вы используете обычное свойство Formula с
нотацией R1C1, то VBA попытается вставить эти буквы в формулу, что, вероятно,
приведет к ошибке формулы.
Поэтому используйте свойство Formula, если ваш код содержит
ссылки на ячейки ($ A $ 1), свойство FormulaR1C1, когда вам нужны относительные
ссылки, которые применяются к нескольким ячейкам или зависят от того, где
введена формула.
Если ваша электронная таблица изменяется в зависимости от
условий вне вашего контроля, таких как новые столбцы или строки данных,
импортируемые из источника данных, то относительные ссылки и нотация стиля
R1C1, вероятно, будут наилучшими.
Я надеюсь, что эти советы помогут. Пожалуйста, оставьте
комментарий ниже с вопросами или предложениями.
андрей тетерин Пользователь Сообщений: 4 |
#1 10.05.2013 18:32:53 Добрый день, уважаемые гуру! Прошу вашей помощи! Есть таблица, по мере заполнения которой нужно вставлять из кода VBA в некоторые ячейки формулы.
Желаемый результат — вставка формулы в ячейку с учетом следующего правила: в функции ВПР адрес искомой ячейки — строка относительная столбец абсолютный Прикрепленные файлы
|
||
vikttur Пользователь Сообщений: 47199 |
Если макросы разрешены — нужна ли формула? |
поверьте — нужны! таблицу заполняют люди очень далекие от макросов.. в то же время для последующего анализа данные должны быть максимально унифицированы. Поэтому и возникло такое решение. |
|
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
Вместо Formula — FormulaLocal К тому же кавычки — «» — необходимо делать двойными. В там виде как у Вас рекордер не воспримет их, т.к. они являются еще и служебным символом, означающим текст. Хотя самый оптимальный и универсальный способ перенести формулу с листа в макрос — начать запись макроса, выделить ячейку с формулой, нажать F2, затем Enter. Остановить запись. Посмотреть, что записал рекордер. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
ikki Пользователь Сообщений: 9709 |
#5 10.05.2013 18:51:29
остальное аналогично. пс. в Excel 2007-2013 можно использовать функцию ЕСЛИОШИБКА — и короче, и повторных вычислений не требует. но с 2003 и старше несовместима. ппс. упс, на русские функции и кавычки я внимания не обратил.
Изменено: ikki — 10.05.2013 19:02:43 фрилансер Excel, VBA — контакты в профиле |
||||
LightZ Пользователь Сообщений: 1748 |
#6 10.05.2013 19:13:01 Саш, а ты тестил? Вариант
Изменено: LightZ — 10.05.2013 19:14:03 Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете? |
||
ikki Пользователь Сообщений: 9709 |
не тестил. потестил. Изменено: ikki — 10.05.2013 19:25:09 фрилансер Excel, VBA — контакты в профиле |
ikki Пользователь Сообщений: 9709 |
LightZ, насколько я понял, автору темы нужна именно завязка на относительность строки. фрилансер Excel, VBA — контакты в профиле |
LightZ Пользователь Сообщений: 1748 |
#9 10.05.2013 19:27:32 А, точно
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете? |
||
ikki Пользователь Сообщений: 9709 |
у меня такой вариант дает ошибку #имя? Изменено: ikki — 10.05.2013 19:32:36 фрилансер Excel, VBA — контакты в профиле |
LightZ Пользователь Сообщений: 1748 |
Вариант с FormulaR1C1Local — хоть убей, но ошибка vba 1004 Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете? |
ikki Пользователь Сообщений: 9709 |
при «повторно активировать» — ясен перец, заработает. фрилансер Excel, VBA — контакты в профиле |
LightZ Пользователь Сообщений: 1748 |
Ок, давай тогда найдём универсальный вариант Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете? |
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
#14 10.05.2013 20:07:28
А этим людям что — нужно писать макросы? Они будут ими ПОЛЬЗОВАТЬСЯ. А Вы полагаете, что макросы не умеют работать с «максимально унифицированным данными»? |
||||
ikki Пользователь Сообщений: 9709 |
имхо, через FormulaR1C1 (с использованием английских функций) — лучше всего. Изменено: ikki — 10.05.2013 20:09:42 фрилансер Excel, VBA — контакты в профиле |
LightZ Пользователь Сообщений: 1748 |
#16 10.05.2013 20:12:44 вот так работает:
и так:
Изменено: LightZ — 10.05.2013 20:43:06 Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете? |
||||
Спасибо, уважаемые! низкий поклон LightZ, ikki, отдельное спасибо The_Prist, и vikttur, Вопрос решен. Тема закрыта |
|
андрей тетерин Пользователь Сообщений: 4 |
#18 10.05.2013 21:45:10 и да… вот рабочий код который сделан с помощь гуру. это для тех кто столкнется с таким вопросом:
|
||
DSH Пользователь Сообщений: 76 |
#19 10.04.2014 22:06:41 Поясните пожалуйста. Вроде указываю диапазон для вставки. Я делал раньше так
Но хотелось бы более культурнее сделать код |
||
Казанский Пользователь Сообщений: 8839 |
#20 10.04.2014 22:16:34 DSH,
|
||
DSH Пользователь Сообщений: 76 |
Казанский, Спасибо большое за помощь. Я понял суть. Изменено: DSH — 10.04.2014 22:36:06 |
RAN Пользователь Сообщений: 7091 |
#22 10.04.2014 22:36:07 В следствии изменения предыдущего сообщения, смысл ответа утерян. Изменено: RAN — 10.04.2014 23:40:00 |