excel - 根据一列中的数据命名变量范围的每一列
问题描述
我试图用相同的基本标题命名每个列标题,但是改变一个单位的值,这个单位的所有数据都在 D 列中。我的 vba 技能非常基础。当我运行代码时,会出现标题,但实际值不会出现,并且每个标题之间都有一列的空格。我不确定为什么会这样
Private Sub Viscosity_Temperature()
Dim dsvt As Worksheet
Dim dst As Worksheet
Dim sr As Range
Dim t As Range
Dim rng As Range
Dim rn As Integer
Dim rn2 As Integer
Dim cl As String
Dim i As Integer
Set dst = Worksheets("Template 2 - Down Sweep")
Sheets.Add.Name = "DownSweep ViscosityTemperature"
Set dsvt = Worksheets("DownSweep ViscosityTemperature")
dst.Range(dst.Range("H1"), dst.Range("H1").End(xlDown)).Copy
dsvt.Range("D1").PasteSpecial Paste:=xlPasteValues
dst.Range(dst.Range("D1"), dst.Range("D1").End(xlDown)).Copy
dsvt.Range("A1").PasteSpecial Paste:=xlPasteValues
dst.Range(dst.Range("C1"), dst.Range("C1").End(xlDown)).Copy
dsvt.Range("B1").PasteSpecial Paste:=xlPasteValues
dst.Range(dst.Range("F1"), dst.Range("F1").End(xlDown)).Copy
dsvt.Range("C1").PasteSpecial Paste:=xlPasteValues
Set rng = dsvt.Range(dsvt.Range("D1"), dsvt.Range("D1").End(xlDown))
rn = rng.Rows.Count
rn2 = rn + 6
cl = Split(Cells(1, rn2).Address, "$")(1)
Set sr = dsvt.Range(dsvt.Range("D2"), dsvt.Range("D2").End(xlDown))
Set t = dsvt.Range("F1:" & cl & "1")
i = 1
For i = 1 To rn
t(1, i).Value = "Viscosity at" & sr(i, 4) & "1/s"
i = i + 1
Next i
End Sub
任何帮助,将不胜感激。
解决方案
我发现了错误 - 在单个列中搜索值并在下一步时将 1 添加到 I。
Private Sub Viscosity_Temperature()
Dim dsvt As Worksheet
Dim dst As Worksheet
Dim sr As Range
Dim t As Range
Dim rng As Range
Dim rn As Integer
Dim rn2 As Integer
Dim cl As String
Dim i As Integer
Set dst = Worksheets("Template 2 - Down Sweep")
Sheets.Add.Name = "DownSweep ViscosityTemperature"
Set dsvt = Worksheets("DownSweep ViscosityTemperature")
dst.Range(dst.Range("H1"), dst.Range("H1").End(xlDown)).Copy
dsvt.Range("D1").PasteSpecial Paste:=xlPasteValues
dst.Range(dst.Range("D1"), dst.Range("D1").End(xlDown)).Copy
dsvt.Range("A1").PasteSpecial Paste:=xlPasteValues
dst.Range(dst.Range("C1"), dst.Range("C1").End(xlDown)).Copy
dsvt.Range("B1").PasteSpecial Paste:=xlPasteValues
dst.Range(dst.Range("F1"), dst.Range("F1").End(xlDown)).Copy
dsvt.Range("C1").PasteSpecial Paste:=xlPasteValues
Set rng = dsvt.Range(dsvt.Range("D1"), dsvt.Range("D1").End(xlDown))
rn = rng.Rows.Count
rn2 = rn + 6
cl = Split(Cells(1, rn2).Address, "$")(1)
Set sr = dsvt.Range(dsvt.Range("D2"), dsvt.Range("D2").End(xlDown))
Set t = dsvt.Range("F1:" & cl & "1")
i = 1
For i = 1 To rn - 1
t(1, i).Value = "Viscosity at " & sr(i, 1) & " 1/s"
Next i
End Sub
1. List item
推荐阅读
- docker - 从一个容器到另一个容器执行代码(即从 API 容器在工作容器上执行脚本)
- python - 将 RowNumber 添加到字典列表
- ios - 如何在 Swift 中重置 UICollectionView
- java - 在Java中以同一方法迭代多个列表的最佳方法是什么
- javascript - D3 设计可重用组件以在“调用”期间接受参数
- spring-boot - 如何为所有扩展类型请求制作控制器?
- excel - 如何锁定宏文件中记录的单元格并使它们具有不同的颜色(也锁定)
- python - 倒排索引,我可以保存单词的元组以及它来自哪里的 id
- node.js - 如何访问 koa.js 中的响应
- batch-file - 仅当适配器当前设置为静态分配时才设置 dns 地址的批处理文件