【发布时间】:2019-12-20 13:41:11
【问题描述】:
我有不同的测试日期和时间,每个时间点最多可以进行大约 100 次测试。我收到的数据只有一列,包含数千行,应该以矩阵类型网格的形式提供。
我只复制了一个样本,它有 6 个时间点,每个时间点最多 4 个测试。当单元格中只有一个日期/时间时,我需要 Excel“识别”,然后将该单元格复制到下一个日期/时间以粘贴到新的工作表和列中。
最终,我还希望将测试的标题与结果分开。但是,如果在不知道每个测试的名称的情况下这不合理,我可以跳过它。这是我开始的数据:
Title
01/02/2010 0:03
Ounces: 10.87
Concentration: 6.89 (L)
Expiration Date: 11/2/2019 5:47:00
01/06/2011 2:06
Ounces: 18.09
Concentration: 10.7 (H)
Expiration Date: 11/2/2019 5:47:00
Other: Resampled
01/06/2011 2:06
Ounces: 12.87
Concentration: 10.9 (H)
Expiration Date: 11/2/2019 5:47:00
Other: 2nd Sample
09/15/2012 7:07
Ounces: 8.53
Concentration: 9.72
Expiration Date: 12/5/2019 4:45:00
05/02/2013 15:52
Ounces: 11.62
Concentration: 8.42
05/09/2017 1:45
Ounces: 9.34
Concentration: 8.98
我创建了以下 Excel VBA,但在编程方面还是新手,尤其是循环内的循环,所以我不知道如何创建足够动态的偏移量以选择正确的单元格,但将它们复制到一个新的列。我在代码中也有冗余。
Sub Transpose()
Dim dDate As Date
Dim NumberofTasks As Long
Dim x As Long
sSheet = ActiveSheet.Name
Sheets.Add
dSheet = ActiveSheet.Name
With Worksheets("Sheet1")
' All Data is in Column A
NumberofTasks = .Cells(.Rows.Count, "A").End(xlUp).Row
For x = 1 To NumberofTasks
Sheets(sSheet).Activate
If IsDate(.Range("A" & x).Value) Then '<-- check if current cell at Column A is Date
Range(Cells(x, 1), Cells(x, 1).Offset(4, 0)).Select
Selection.Copy
Sheets(dSheet).Activate
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
ActiveCell.Offset(1, 0).Select
End If
Next x
End With
End Sub
但是,偏移量将另一个日期放置在具有当前代码的另一个单元格中。感谢您为我提供的任何帮助。
【问题讨论】:
标签: excel vba copy-paste