假设有两个工作表:工作表1,工作表2
工作表1有一个名为'Number'
工作表2也是一个名为'Number'
现在我在工作表2的“数字”栏中输入一个数字。
我现在需要在工作表1的“数字”列中输入的数字i与工作表1的“数字”列匹配。
如果匹配,则允许在工作表2上输入,否则抛出错误'Invalid Data'
。
你们能为我解决同样的问题:)
答案 0 :(得分:2)
无需使用VBA。您可以使用 Data validation:
<强> Sheet 1中:强>
<强> Sheet 2中:强>
在 sheet2 中选择整个列“Numbers”。转到数据 - &gt;数据验证。选择自定义并输入公式:
=AND(ISNUMBER(MATCH($A1,Sheet1!$A:$A,0)),COUNTIF($A:$A,$A1)<2)
sheet1 中“Numbers”列的Sheet1!$A:$A
地址。 $A:$A
- sheet2 中“Numbers”列的地址。
ISNUMBER(MATCH($A1,Sheet1!$A:$A,0))
仅允许输入值
来自sheet1。COUNTIF($A:$A,$A1)<2
不允许重复
选择“错误警报”标签,然后输入错误消息。
完成!强>
答案 1 :(得分:1)
这些方面应该有效:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TarColumn as Integer 'stores the column number of the modified cell
TarColumn = Target.Column 'sets the column number
If TarColumn = 1 Then 'replace 1 with the column number of your Number Column
Dim RowCountA as Long 'stores the amount of rows in your worksheets
Dim RowCountB as Long
Dim a, b 'will store the numbers from the number columns
RowCountA = Worksheets("Sheet1").Cells(Rows.Count,1).End(xlUp).Row 'find the last row of data
RowCountB = Worksheets("Sheet2").Cells(Rows.Count,1).End(xlUp).Row
a = Worksheets("Sheet1").Cells(1,1).Resize(RowCountA,1) 'copys the numbers into the arrays
b = Worksheets("Sheet2").Cells(1,1).Resize(RowCountB,1)
For i = 0 To RowCountA - 1 'checks to see if it is in the first sheet
If Target.Value = a(i,1) then
MsgBox("Invalid Data")
Target.Value = ""
Exit Sub
End If
Next
For i = 0 to RowCountB - 2 'ensures no duplication in the second sheet
If Target.Value = b(i,1) then
MsgBox("Invalid Data")
Target.Value = ""
Exit Sub
End If
Next
End If
End Sub
您可能需要修改.cells(1,1)
以适合您的代码,具体取决于表格中的标题和位置。