首页 > 解决方案 > 根据一列中的数据命名变量范围的每一列

问题描述

我试图用相同的基本标题命名每个列标题,但是改变一个单位的值,这个单位的所有数据都在 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

任何帮助,将不胜感激。

标签: excelvbarangemultiple-columns

解决方案


我发现了错误 - 在单个列中搜索值并在下一步时将 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


推荐阅读