2017-04-13 112 views
1

當試圖對列交叉表進行比較時,我有「對象不支持此方法」錯誤。 。如果在片材1個既匹配列A和B中片2兩列A和B,將在片材顯示匹配3.多個條件

enter image description here

+2

請不要發佈您的代碼的屏幕截圖。將代碼粘貼到問題中,突出顯示並使用'{}'按鈕進行格式化。你需要使用'如果a = b和c = d然後'。 '&'是VBA中的連接運算符。 –

回答

0

有代碼中的一些問題。將來,請張貼實際的代碼(不是截圖)。

  1. 小心你的if語句中的「And」與「&」。
  2. 「.value」沒有「.values」在你的變數中。
  3. 「Dim as string」,因爲我們正在處理單元格。
  4. 「工作表」。不是「工作表」。
  5. 我不認爲你需要一個「設置」這些。 (可能是錯誤的)

請嘗試下面的代碼,它適用於我。您可能需要修改寫入「匹配」工作表的行。

Sub find() 

Dim a As String 
Dim b As String 
Dim c As String 
Dim d As String 

a = Worksheets("sheet1").Range("a1").Value 
b = Worksheets("sheet2").Range("a1").Value 
c = Worksheets("sheet1").Range("b1").Value 
d = Worksheets("sheet2").Range("b1").Value 

If a = b And c = d Then 

Worksheets("match").Range("A65536").End(xlUp).Offset(1, 0).Value = c 
Worksheets("match").Range("A65536").End(xlUp).Offset(0, 1).Value = c 

End If 
End Sub 
+1

變量a到d可能是數字。除非有人知道他們是文字,否則他們最好被宣佈爲變體。 「Set」關鍵字必須與對象一起使用,例如範圍。 'Set a = Worksheets(「sheet1」)。Range(「a1」)。Value'將導致一個錯誤「Object required」,因爲'.Value'不是一個對象。 Set a = Worksheets(「sheet1」)。如果'a'被聲明爲一個範圍,範圍(「a1」)''將把範圍對象賦值給變量'a'。當兩者都是範圍時比較'a = b'可能是可行的,因爲Value屬性是範圍對象的默認值,但它是非常糟糕的語法。 – Variatus

+0

'c'需要保留爲'Range'對象,這樣使用'c.Offset(0,2).Value'的OP分配才能工作(您的代碼只需使用'c'設置最終分配) – YowE3K

+0

好點@Variatus。我正在閱讀我的[範圍對象](http://www.excel-easy.com/vba/range-object.html),因爲它已經有一段時間了。 – primohacker