【问题标题】:Excel - Select Column by number and sheetnameExcel - 按数字和工作表名称选择列
【发布时间】:2016-05-12 18:26:40
【问题描述】:

Sheet1 上有 4 列,Sheet2 上有 4 列 我已将工作表 1 上的列命名为:

MvarNo = 1
Mdesc = 2
Mfile = 3
Mfield = 4

其中 1 = a 等等......

如何用工作表名称和列号命名这些列?

谢谢

更新

Sub Compare()

MvarNo = 1 'Sheet1
Mdesc = 2 'Sheet1
Mfile = 3 'Sheet1
Mfield = 4 'Sheet1

XvarNo = 6 'Sheet1
Xdesc = 7 'Sheet1
Xfile = 8 'Sheet1
Xfield = 9 'Sheet1

CvarNo = 1 'Sheet2
Cdesc = 2 'Sheet2
Cfile = 3 'Sheet2
Cfield = 4 'Sheet2

'Count rows on Master Sheet (Sheet1)
MvarNoLastRow = Worksheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
MdesclastRow = Worksheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row
 MfilelastRow = Worksheets("Sheet1").Cells(Rows.Count, "C").End(xlUp).Row
MfieldlastRow = Worksheets("Sheet1").Cells(Rows.Count, "D").End(xlUp).Row

'Count rows on Compare Sheet (Sheet2)
CvarNoLastRow = Worksheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row
CdesclastRow = Worksheets("Sheet2").Cells(Rows.Count, "B").End(xlUp).Row
CfilelastRow = Worksheets("Sheet2").Cells(Rows.Count, "C").End(xlUp).Row
CfieldlastRow = Worksheets("Sheet2").Cells(Rows.Count, "D").End(xlUp).Row

For i = 2 To MvarNoLastRow
For j = 2 To CvarNoLastRow

  If Cells(i, MvarNo) = Cells(j, CvarNo) Then
  Cells(i, XvarNo).Value = "Yes"
'        If Cells(i, MvarNo) = Cells(j, CvarNo) And Cells(i, Mdesc) = Cells(j, Cdesc) And Cells(i, Mfile) = Cells(j, Cfile) And Cells(i, Mfield) = Cells(j,     Cfield) Then
'        Cells(i, XvarNo).Value = "Yes"
'        ElseIf Cells(i, MvarNo) <> Cells(j, CvarNo) And Cells(i, Mdesc) <>     Cells(j, Cdesc) And Cells(i, Mfile) <> Cells(j, Cfile) And Cells(i, Mfield) <>     Cells(j, Cfield) Then
      j = j + 1
    ElseIf j = CvarNoLastRow Then
    Cells(i, XvarNo).Value = "No"


  End If

  Next j


Next i

End Sub

这个宏的原因是比较表 1 和表 2 之间的信息。 我从我的代码中“认为”它实际上只是将工作表 1 上的数据与工作表 1 进行比较。

【问题讨论】:

  • 认为您需要更具体地了解您的目标,您可能正在尝试创建对单元格地址的引用,或者创建一个范围或各种其他东西......或者它可能是像Worksheets("Sheet1").Cells(somerow, MvarNo) 一样简单(假设您在代码中的某处定义了列,这很难从您的帖子中看出)
  • Cells(i, MvarNo) 被解释为ActiveSheet.Cells(i, MvarNo)。您需要在前面添加工作表:Worksheets("Sheet2").Cells(i, MvarNo)

标签: vba excel


【解决方案1】:

这行得通吗?

我的工作表名为“广告收入”

Sub test()
    Dim lC As Long
    Dim strColNames(1 To 4) As String
    For lC = 1 To 4
        strColNames(lC) = Sheet1.Name & vbTab & Str(Cells(1, lC).Column)
    Next lC End Sub
End Sub()

【讨论】:

    【解决方案2】:

    如果您需要获取工作表名称,以下所有方法都可以:

    =SUBSTITUTE(CELL("filename"),LEFT(CELL("filename"),FIND("]",CELL("filename"))),"")
    
    =RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))    
    
    =MID(CELL("filename"),FIND("]",CELL("filename"))+1,31)
    

    后者之所以有效,是因为 excel 在命名工作表时将您限制为 31 个字符

    要获取列的名称,您可以使用以下内容:

    =SUBSTITUTE(MID(ADDRESS(1,CELL("col")),2,2),"$","")
    
    =MID(SUBSTITUTE(ADDRESS(1,COLUMN(R31)),"$1",""),2,2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多