去年离职后,好长一段时间没碰程序了。最近一位高中同学找到我,让我帮她做一些Excel文档的数据分析,只好硬着头皮答应下来。因为寒假的关系,很多学生来补课,我陆陆续续写了好几天,重拾代码的心情难以言语。
需求很简单,就是要将下图中左图的数据,转变成右图中的数据:
解决思路也不复杂:
先横向遍历汽车,为每辆汽车建立一个Sheet,填入汽车型号
再纵向遍历汽车零件,如果有零件,则在新Sheet里面填入零件名称和零件数量
VBA代码:
Sub car()
' 删除多余的sheet
Application.DisplayAlerts = False
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name <> "总" Then ws.Delete
Next
Application.DisplayAlerts = True
' 每辆车创建一个sheet
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim s As String
For i = 2 To Worksheets("总").UsedRange.Columns.Count
s = Worksheets("总").Cells(1, i)
Worksheets.Add().Name = s
Worksheets(s).Cells(1, 2) = s
k = 2
For j = 2 To Worksheets("总").UsedRange.Rows.Count
If Worksheets("总").Cells(j, i) > 0 Then
Worksheets(s).Cells(k, 2) = Worksheets("总").Cells(j, i)
Worksheets(s).Cells(k, 1) = Worksheets("总").Cells(j, 1)
k = k + 1
End If
Next
Next
End Sub
VBA语法可以在开源中国中搜索"VBA" 或 查看文章:Excel中的常用VBA语言
后话:
半年的修养后,身体终于恢复了,最近重拾计算机后,发现心态已有所改变,环境的确是一个很奇妙的东西,无论如何改变自己,永远都无法代替环境。
重拾计算机后,每天又开始坚持看些文章,王垠的《程序员的心理疾病》这片文章让我反思自己的过去,发现很多自己的不完善,今后得以此为借。
修养这段时间内,发现了一些身体里面的秘密,饮食,睡眠,心态,这些都是非常重要的,身体年龄和实际年龄是有差距的,自从看了 Ray Kurzweil 的《奇点临近》,《如何活得长久》后,也开始了养身的行动。在后续的博客中会提到相关内容。