2015-04-01 61 views
0
A.Range(A2 & Lrow).Copy B.Cells(Rows.Count, "A").End(xlUp).Offset(1, 1) 
A.Cells(1,1).Copy B.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) 

这是代码复制第一个标题及其对应的列计算范围引用不同的列

Sheet A         Code Output 

    Male Female      Male  Mike   
    Mike Rose       Female John 
    John Kat         Bob 
    Bob  Lisa         Rose 
               Kat 
               Lisa 
          Expected output 

       Male Mike     Male Mike 
         John     Male John 
         Bob    OR  Male Bob 
       Female Rose     Female Rose 
         Kat      Female Kat 
         Lisa     Female Lisa 

让我解释一下:当我使用,我用每次进行复制粘贴正常码,我得到男性和女性连续这是错误的,因为应该从玫瑰。我发现唯一的问题可能是我用来抵消第一列的范围是通过上升找到的,所以编译器会在第一行中上升到第二行,而我希望它直到列B中的最后一个值。任何这种输出可能?

B.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) 

这是我需要改变我认为但需要帮助。谢谢。

回答

0

你应该能够修改此使其工作:

male_count = Application.WorksheetFunction.CountA(Worksheets("Sheet A").Range("A1:A100")) 
female_count = Application.WorksheetFunction.CountA(Worksheets("Sheet A").Range("B1:B100")) 

Worksheets("Sheet A").Range("A1").Copy 
Worksheets("code output").Range("A1").PasteSpecial Paste:=xlPasteValues 

Worksheets("Sheet A").Range("A2:A" & male_count).Copy 
Worksheets("code output").Range("B1").PasteSpecial Paste:=xlPasteValues 

Worksheets("Sheet A").Range("B1").Copy 
Worksheets("code output").Range("A" & male_count).PasteSpecial Paste:=xlPasteValues 

Worksheets("Sheet A").Range("B2:B" & female_count).Copy 
Worksheets("code output").Range("B" & male_count).PasteSpecial Paste:=xlPasteValues 
+0

什么male_count和他们 – Meesha 2015-04-01 20:34:27

+0

分别female_count有男性和女性的条目数,包括头。 – Economist 2015-04-01 20:37:54

0
Sub Test() 
    Dim wb As Workbook 
    Set wb = ThisWorkbook 
    Dim ws As Worksheet 
    Set ws1 = wb.Sheets("Sheet1") 'Rename Sheet1 to your sheet where source data is 
    Set ws2 = wb.Sheets("Sheet2") 'Rename Sheet2 to your sheet where you want output 
    ws1.Activate 
    LastRow1 = Range("A" & Rows.Count).End(xlUp).Row 'Change Column Letter to where you have Male names 
    LastRow2 = Range("B" & Rows.Count).End(xlUp).Row 'Change Column Letter to where you have Femal names 
    Set MaleRng = ws1.Range(Cells(2, 1), Cells(LastRow1, 1)) 
    Set FemaleRng = ws1.Range(Cells(2, 2), Cells(LastRow2, 2)) 
    i = 1 
    For Each Male In MaleRng 
    ws2.Cells(i, 1) = "Male" 
    ws2.Cells(i, 2) = Male.Value 
    i = i + 1 
    Next 
    ws2.Activate 
    i = ws2.Range("A" & Rows.Count).End(xlUp).Row 
    j = i + 1 
    For Each Female In FemaleRng 
    ws2.Cells(j, 1) = "Female" 
    ws2.Cells(j, 2) = Female.Value 
    j = j + 1 
    Next 

    End Sub 
+0

这应该完美无缺! – 2015-04-02 03:23:24