excel vba 引用 公式
时间: 2023-07-07 09:12:24 浏览: 193
在 VBA 中可以使用 `Range.Formula` 属性来引用一个 Excel 公式。例如,以下代码将在单元格 A1 中引用一个求和公式:
```
Range("A1").Formula = "=SUM(B1:B10)"
```
这会将该公式设置为 A1 单元格的计算公式。如果需要引用一个带有 VBA 变量的公式,可以使用字符串拼接的方式,例如:
```
Dim col As Integer
col = 2
Range("A1").Formula = "=SUM(B1:B" & col & ")"
```
此代码将使用变量 `col` 来构建公式字符串,实现引用公式的目的。
相关问题
excel表格vba代码
以下是一些Excel表格VBA代码的示例:
1. 获取工作簿中指定工作表的数据并存入数组:
```vba
Function get_arr(file, sh_name)
Dim wb As Workbook
Set wb = Workbooks.Open(file)
wb.Sheets(sh_name).Select
row_num = \[b65536\].End(xlUp).Row
col_num = ActiveSheet.UsedRange.Columns.Count
col_str = get_col(col_num) '获取列名称
arr = Sheets(sh_name).Range("a1:" & col_str & row_num)
wb.Close False
Set wb = Nothing
get_arr = arr
End Function
```
2. 将当前工作表中的公式转换为数值:
```vba
Sub shuzhi()
row_num = \[a65536\].End(xlUp).Row
col_num = ActiveSheet.UsedRange.Columns.Count
col_str = get_col(col_num)
Range("A1:" & col_str & row_num).Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Sub
```
3. 添加新工作表并删除旧数据:
```vba
Function add_sheet(sh_name)
'删除旧数据
Application.DisplayAlerts = False
For Each sht In Sheets
If sht.Name = sh_name Then
sht.Delete
End If
Next sht
Application.DisplayAlerts = True
'添加新工作表
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = sh_name
End Function
Sub ffa()
row_num = \[a65536\].End(xlUp).Row
col_num = ActiveSheet.UsedRange.Columns.Count
col_str = get_col(col_num)
arr = Range("A1:" & col_str & row_num)
add_sheet("删除后")
Sheets("删除后").Range("a1").Resize(row_num, UBound(arr, 2)) = arr
For i = row_num To 1 Step -1
If Cells(1, i) = "同比" Or Cells(1, i) = "" Then '此处填写条件
Columns(i).Delete
End If
Next i
End Sub
```
希望以上代码能够帮到您。如果您有其他问题,请随时提问。
#### 引用[.reference_title]
- *1* *2* *3* [OFFICE Excel表格中常用的vba代码集锦](https://blog.csdn.net/qq_41780234/article/details/98598325)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
EXCEL vba 按照比例生成对应数据
可以通过 VBA 中的 Range 对象的 Resize 和 Value 属性来实现按照比例生成对应的数据。例如,如果要按照比例在 A1 等 3 个单元格中生成 1、2、3 三个数字,则可以使用以下代码:
```
Sub GenerateDataByRatio()
Dim rng As Range
Set rng = Range("A1:A3")
rng.Value = Application.Transpose(Array(1, 2, 3))
rng.Resize(rng.Count, 2).Offset(0, 1).Formula = _
"=A1/SUM(A$1:A$3)"
rng.Resize(rng.Count, 2).Offset(0, 1).Value = _
rng.Resize(rng.Count, 2).Offset(0, 1).Value
End Sub
```
这段代码先将 1、2、3 三个数字转为数组,然后使用 Transpose 函数将其转置为一列数据,再将其赋给 Range 对象 rng 的 Value 属性,随后重新设定 rng 中的数据大小为 3x2,并使用偏移量移动到 rng 右侧一列。在为 rng 的右侧列设置公式时,使用了相对引用和绝对引用来计算每个数字占总和的比例,欲了解更多有关 VBA 编程和 Excel 的用法,建议参考 CSDN 中与 Excel VBA 相关的教程。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)