2016-05-12 25 views
0

我有Sheet 1上4列和4 Sheet 2上 我已命名爲columnson片1:Excel中 - 由數字選擇列和SHEETNAME

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

其中1 =一個等....

如何使用表名和列號命名這些列?

由於

UPDATE

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和sheet2之間比較的信息。 我'從我的代碼'認爲'它實際上只是比較表1中的數據與sheet1。

+1

認爲你需要更具體的瞭解你的目標,你可以嘗試創建一個單元格地址的引用,或創建一個範圍或其他各種各樣的東西......或者它可以像工作表(「Sheet1」)一樣簡單。單元格(somerow,MvarNo)'(假設你已經在代碼中定義了列,這很難從你的文章中知道) – Dave

+1

'Cells(i,MvarNo)'被解釋爲'ActiveSheet.Cells(i,MvarNo)'。您需要在前面添加工作表:'Worksheets(「Sheet2」)。Cells(i,MvarNo)'。 –

回答

0

這是行不通的嗎?

這裏我單被稱爲 「廣告收入」

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() 

enter image description here

0

如果你需要得到工作表名稱,以下所有將工作:

=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)