扩展If语句以返回数值和文本值

时间:2014-12-04 20:30:26

标签: excel excel-vba vba

我正在尝试编写代码,根据列标题将数据从一个工作表复制到另一个工作表:

Sub Copy Headers()  

  Dim header As Range, headers As Range
  Set headers = Worksheets("WS1").Range("A1:AX1")

  For Each header In headers
    If GetHeaderColumn(header.Value) > 0 Then

      Range(header.Offset(1,0), header.End(xlDown)).Copy Destination:=Worksheets("WS2").Cells(2,        GetHeaderColumn(header.Value))
    End If    
  Next

End Sub

Function GetHeaderColumn(header As String) As Integer

  Dim headers As Range
  Set headers = Worksheets("WS2").Range("A1:AX1")
  GetHeaderColumn = IIf (IsNumeric(Application.Match(header,headers, 0)), Application.Match(header, headers, 0), 0)

End Function

此代码几乎适用于所有列,但它不适用于具有列标题Faculty的一列,并且填充了名称,而不是数字。

我的代码是否因包含IsNumeric而限制太多,或代码是否存在其他问题?

0 个答案:

没有答案