如何根据列内容复制excel中的行?
我在excel表格中有以下数据如何根据列内容复制excel中的行?,excel,excel-2010,vba,Excel,Excel 2010,Vba,我在excel表格中有以下数据 r1 r2 r3 r4 r5 v1 v2 r3 r4 r5 x1 x2 r4 r5 是否可能(以及如何)将此数据转换为以下结构: r1 r2 r3 r1 r2 r4 r1 r2 r5 v1 v2 r3 v1 v2 r4 v1 v2 r5 x1 x2 r4 x1 x2 r5 提前谢谢这就是你要尝试的吗 Sub Sample() Dim wsI As Worksheet, wsO As Worksheet Dim wsIlRow As Lon
r1 r2 r3 r4 r5
v1 v2 r3 r4 r5
x1 x2 r4 r5
是否可能(以及如何)将此数据转换为以下结构:
r1 r2 r3
r1 r2 r4
r1 r2 r5
v1 v2 r3
v1 v2 r4
v1 v2 r5
x1 x2 r4
x1 x2 r5
提前谢谢这就是你要尝试的吗
Sub Sample()
Dim wsI As Worksheet, wsO As Worksheet
Dim wsIlRow As Long, wsOlRow As Long, i As Long, j As Long
Set wsI = Sheets("Sheet1")
Set wsO = Sheets("Sheet2")
wsIlRow = wsI.Range("A" & wsI.Rows.Count).End(xlUp).Row
wsOlRow = 1
For i = 1 To wsIlRow
For j = 3 To 5
If Len(Trim(wsI.Cells(i, j).Value)) <> 0 Then
wsO.Range("A" & wsOlRow).Value = wsI.Range("A" & i).Value
wsO.Range("B" & wsOlRow).Value = wsI.Range("B" & i).Value
wsO.Range("C" & wsOlRow).Value = wsI.Cells(i, j).Value
wsOlRow = wsOlRow + 1
End If
Next j
Next i
End Sub
子样本()
将wsI设置为工作表,将wsO设置为工作表
模糊的wsIlRow一样长,wsOlRow一样长,i一样长,j一样长
设置wsI=图纸(“图纸1”)
设置wsO=图纸(“图纸2”)
wsIlRow=wsI.Range(“A”&wsI.Rows.Count).End(xlUp).Row
wsOlRow=1
对于i=1到wsIlRow
对于j=3到5
如果Len(Trim(wsI.Cells(i,j.Value))为0,则
wsO.Range(“A”&wsOlRow).Value=wsI.Range(“A”&i).Value
wsO.Range(“B”&wsOlRow).Value=wsI.Range(“B”&i).Value
wsO.Range(“C”和wsOlRow).Value=wsI.Cells(i,j).Value
wsOlRow=wsOlRow+1
如果结束
下一个j
接下来我
端接头
快照
此方法使用数组来避免范围循环。它转储从a:E列到F:H列的范围
Sub MoveEM()
Dim rng1 As Range
Dim X
Dim Y
Dim lngRow As Long
Dim lngCol As Long
Dim lngCnt As Long
Set rng1 = Range([a1], Cells(Rows.Count, "E").End(xlUp))
X = rng1.Value2
ReDim Y(1 To 3 * UBound(X, 1), 1 To 3)
For lngRow = 1 To UBound(X, 1)
For lngCol = 1 To 3
lngCnt = lngCnt + 1
Y(lngCnt, 1) = X(lngRow, 1)
Y(lngCnt, 2) = X(lngRow, 2)
Y(lngCnt, 3) = X(lngRow, 2 + lngCol)
Next
Next
[f1].Resize(UBound(Y, 1), UBound(Y, 2)) = Y
End Sub
所以你的excel总是有5列,你想根据最后3列复制行吗?我相信这不是重复。。。您需要的是基于最后三列数据创建一行中的三行。为此,您需要编写MACRO@NirajNawanit确切地Fahim Pakar,我想我需要为此编写宏,但我对VBA知之甚少。你们有我可以从哪里开始的指南吗?