【发布时间】:2015-01-20 05:19:25
【问题描述】:
我是 VBA 的新手,在观看视频和谷歌搜索 5 小时后,我认为这太过分了......非常感谢任何帮助。
所以我有 2 个 Excel 工作表:Sheet1 和 Sheet2。我在 Sheet1 中有一个 Y/N 列,如果 column = "Y",那么我想从 Sheet2 中具有匹配列名的行中复制所有数据。
Sheet1
Product Price SalesPerson Date Commission Y/N
A $25 John 1/9/15 $3 Y
B $20 John 1/12/15 $2 N
B $15 Brad 1/5/15 $1 Y
Sheet2
Price Product Date Salesperson
因此,每次 Y/N = Y 时,将匹配的数据复制到 sheet2 并执行此操作,直到 sheet1.col1 为空(循环)。结果是这样的:
Sheet2
Price Product Date Salesperson
$25 A 1/9/15 John
$15 B 1/5/15 Brad
这些列不按顺序排列,而且太多,无法手动输入。最后但并非最不重要的是,Y/N 列需要在完成后清除。我试图改变这个没有运气:
Sub CopyHeaders()
Dim header As Range, headers As Range
Set headers = Worksheets("Sheet1").Range("A1:Z1")
For Each header In headers
If GetHeaderColumn(header.Value) > 0 Then
Range(header.Offset(1, 0), header.End(xlDown)).Copy Destination:=Worksheets("Sheet2").Cells(2, GetHeaderColumn(header.Value)).End(xlDown).Offset(1, 0)
End If
Next
End Sub
Function GetHeaderColumn(header As String) As Integer
Dim headers As Range
Set headers = Worksheets("Sheet2").Range("A1:Z1")
GetHeaderColumn = IIf(IsNumeric(Application.Match(header, headers, 0)), Application.Match(header, headers, 0), 0)
End Function
这旨在做一些与我正在尝试做的不同的事情,我认为我无法改变它来为我工作。我该怎么做?
【问题讨论】:
-
我将做更多的研究并更新它,但我无法让这段代码工作......可能是由于 sheet2 包含不在 sheet1 中的列