Function GetEngName(ByVal argColumn As Integer) As String
Dim strEngName As String
Dim iNum, iMod As Integer
iNum = argColumn \ 26
iMod = argColumn Mod 26
If (iMod = 0) Then
If (iNum = 1) Then
strEngName = Chr(90)
Else
strEngName = Chr(65 + iNum - 2) + Chr(90)
End If
Else
If (iNum = 0) Then
strEngName = Chr(65 + iMod - 1)
Else
strEngName = Chr(65 + iNum - 1) + Chr(65 + iMod - 1)
End If
End If
GetEngName = strEngName
End Function
'isdate()
'IsNumeric
'trim(myrange)=""
'数据有效性--设置--允许--序列--在空白框中输入要选择的内容,用“,”隔开,半角模式下
'iRows = ActiveSheet.UsedRange.Rows.Count
'iColumns = ActiveSheet.UsedRange.Columns.Count
'Core Datasets
Function validateCoreDatasets() As Integer
'每次开始验证都将颜色设为无色
Sheet2.Range("A2:T65536").Interior.ColorIndex = xlNone
'统计出错的个数
Dim count As Integer
count = 0
Dim value As String
Dim field As String
Dim engName As String
Dim temp As String
Dim columnCount As Long
columnCount = Sheet2.UsedRange.Columns.count
'循环各列
For columnNum = 1 To columnCount
field = Sheet2.Cells(1, columnNum).value
engName = GetEngName(columnNum)
If Trim(field) = "Organism_Type" Then
temp = "、Antibody、Archaea、Bacteria、Fungi、Microalgae、Phage、Virus、Yeast、"
For i = 2 To Sheet2.Range(engName + "65536").End(xlUp).Row
value = Sheet2.Cells(i, columnNum).value
If Trim(value) <> "" Then
If InStr(temp, "、" & value & "、") <= 0 Then
count = count + 1
Sheet2.Cells(i, columnNum).Interior.Color = vbRed
End If
End If
Next
ElseIf Trim(field) = "Status" Then
temp = "、Type、No、"
For i = 2 To Sheet2.Range(engName + "65536").End(xlUp).Row
value = Sheet2.Cells(i, columnNum).value
If Trim(value) <> "" Then
If InStr(temp, "、" & value & "、") <= 0 Then
count = count + 1
Sheet2.Cells(i, columnNum).Interior.Color = vbRed
End If
End If
Next
End If
If Trim(field) = "Bio hazard level" Then
temp = "、1、2、3、4、"
For i = 2 To Sheet2.Range(engName + "65536").End(xlUp).Row
value = Sheet2.Cells(i, columnNum).value
If Trim(value) <> "" Then
If InStr(temp, "、" & value & "、") <= 0 Then
count = count + 1
Sheet2.Cells(i, columnNum).Interior.Color = vbRed
End If
End If
Next
End If
If Trim(field) = "Date of Identification" Or Trim(field) = "Date of deposition" Then
For i = 2 To Sheet2.Range(engName + "65536").End(xlUp).Row
value = Sheet2.Cells(i, columnNum).value
If Trim(value) <> "" Then
If IsDate(value) = False Or InStr(value, "-") <= 0 Then
count = count + 1
Sheet2.Cells(i, columnNum).Interior.Color = vbRed
End If
End If
Next
End If
Next
validateCoreDatasets = count
End Function



------解决思路----------------------
第一段代码是根据列数(阿拉伯数字)取对应的ABCD,估计是Excel的宏吧。
比如1列对应A列,27列对应AA列,这样的
第二段太长,懒得看