VBA将数据获取到不同格式Excel的新工作表

时间:2014-09-30 06:35:07

标签: vb.net excel vba excel-vba basic

我还是VBA EXCEL编程的新手。

我需要以不同的格式将数据从一张纸提取到另一张。但是,许多教程似乎只是按行或按范围范围提取数据行到新表。

所以这是我的DataSheet1:

**School         Principal    Student    Student ID**
United College   Bill Gates   Peter      p3214
United College   Bill Gates   Mary       p4213
United College   Bill Gates   Forge      p7621
Beverly High     Melin Brad   Goge       p1111
Beverly High     Melin Brad   Fred       p2222

我想在另一个数据表中将数据转换为自定义格式。所以这是我想要的结果:

School      United College
Principal   Bill Gates

Student   Student ID
Peter     p3214
Mary      p4213
Forge     p7621


School      Beverly High
Principal   Melinda Brad

Student   Student ID
Goge      p1111
Fred      p2222

以下是我从Sheet1到Sheet2的一些代码,但代码只显示从范围到范围获取数据。应该使用哪些概念将数据提取为自定义格式?我的代码:

Dim secondsheet As Worksheet
Set secondsheet = workbook.Worksheets(2)
Dim firstsheet As Worksheet
Set firstsheet = workbook.Worksheets(1)

secondsheet.Range("A1", "C10").Value = firstsheet.Range("A1", "C10").Value

我打算将数据放入的格式:

Range(<<call function for range>>).Select
With Selection
    .Value = "School"
    .Offset(1,0).Value = "Principal"
    .Offset(1,0).Font.Bold = True
    .Offset(4,1).Value = "Student"
    .Offset(4,1).Font.Bold = True
    .Offset(4,2).Value = "Student ID"
    .Offset(4,2).Font.Bold = True

所以我寻找的答案是循环功能,因为它采用这种格式。任何善良的人都愿意帮助我理解vba的概念吗?

1 个答案:

答案 0 :(得分:0)

将数据保存在Sheet1中并运行宏...我的宏中存在小错误..如果你解决了它可以轻松纠正

col1 = Sheet1.Cells(2, 1)
prin1 = Sheet1.Cells(2, 2)
Sheet2.Cells(1, 1) = "School"
Sheet2.Cells(1, 2) = "Principal"
Sheet2.Cells(2, 1) = col1
Sheet2.Cells(2, 2) = prin1
b = 5
c = 1
Sheet2.Cells(b - 1, 1) = "Student"
Sheet2.Cells(b - 1, 2) = "St ID"
a = 3

Do While Sheet1.Cells(a, 1) <> ""
If col1 = Sheet2.Cells(c + 1, 1) Then
Sheet2.Cells(b, 1) = Sheet1.Cells(a, 3)
Sheet2.Cells(b, 2) = Sheet1.Cells(a, 4)
b = b + 1
Else
c = b + 1
b = c + 3

col1 = Sheet1.Cells(a, 1)
prin1 = Sheet1.Cells(a, 2)
Sheet2.Cells(c, 1) = "School"
Sheet2.Cells(c, 2) = "Principal"
Sheet2.Cells(c + 1, 1) = col1
Sheet2.Cells(c + 1, 2) = prin1
Sheet2.Cells(b - 1, 1) = "Student"
Sheet2.Cells(b - 1, 2) = "St ID"
Sheet2.Cells(b, 1) = Sheet1.Cells(a, 3)
Sheet2.Cells(b, 2) = Sheet1.Cells(a, 4)
End If
a = a + 1
Loop