Vba 返回作为单元格中的值的地址行

Vba 返回作为单元格中的值的地址行,vba,excel,Vba,Excel,我有几个单元格包含其他单元格的地址,例如: K6值=$F$95 K7值=$F$137 我想将这些值中的每一行分配给一个变量,并附加一个不同的列。我试着这样做,但没有成功: Dim X1 As String Dim X2 As String Dim Y1 As String Dim Y2 As String Dim ChtSheet As Chart Set ChtSheet = ActiveWorkbook.Charts.Add .

我有几个单元格包含其他单元格的地址,例如:

  • K6值=$F$95
  • K7值=$F$137
我想将这些值中的每一行分配给一个变量,并附加一个不同的列。我试着这样做,但没有成功:

    Dim X1 As String
    Dim X2 As String
    Dim Y1 As String
    Dim Y2 As String
    Dim ChtSheet As Chart

    Set ChtSheet = ActiveWorkbook.Charts.Add
.    


     X1 = "C" & Sheets("Sheet1").Range("K6").Rows.Value      'I want X1 = "$C$95"
        X2 = "C" & Sheets("Sheet1").Range("K7").Rows.Value      'I want X2 = $C$137

    Y1 = Sheets("Sheet1").Range("K6").Value  'where the value in this cell is $F$95
    Y2 = Sheets("Sheet1").Range("K7").Value  'Where the value in this cell is $F$137
非常感谢您的帮助


谢谢。

让我们集中讨论包含$95的K6:

X1 = Sheet1.Range(Sheet1.Range("K6").Value).EntireRow.Cells(1, "C").Address
将产生“$C$95”

请注意,假定Sheet1是Excel选项卡上名为“Sheet1”的工作表的代号。代码名是引用工作表的更好方法,因为即使您从Excel重命名工作表,代码名仍然保持不变。通过在项目浏览器中单击工作表并显示其属性(F4),可以在VBA编辑器中查看和更改工作表的代码名;只需分配给(Name)属性

上面的原理是使用K6中的值,这是一个地址,以获得这个地址所指向的范围,然后在位置(1,C)上考虑整行的单元格,即行1,列“C”。无论K6中提到的列是什么,结果中总是以列“C”结尾

不确定你想用X1做什么;您通常不需要这个字符串,因为您可以使用以下范围:

Dim myRange As Excel.Range

Set myRange = Sheet1.Range(Sheet1.Range("K6").Value).EntireRow.Cells(1, "C") 'Who cares about the address :-)
'... do something with this range...

似乎你可以用C
X1=replace([Sheet1!K6],“F”,“C”)
来替换F。非常感谢。哇,谢谢你的解答和解释。这很有效!