2017-03-29 45 views
-1

HI複製的列表,以便我有一組數據,我想複製。基本上我想創建一個if函數。如果我們在列B中搜索空白行並且它是空白的,則循環到下一行,並繼續直到第一個非空白行。如果我們從列c中所有空白行中的所有單元格中選擇一個非空白副本,使用非空白和空白行作爲一個頭尾循環

Sub NotReadys() 

' NotReadys Macro' 
Dim Z As Integer 'Supplier Beginning Row' 
Dim X As Integer 'Next Non Blank row' 
Dim Q As Integer '# of suppliers' 
Dim Y As Integer 'Paste Row' 
Y = 6 
'For T = 1 To 195 


ActiveWindow.SmallScroll Down:=-33 


Range("B" & Y).Select 
Selection.Copy 

Range("E" & Y).Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Range("F" & Y).Select 
Application.CutCopyMode = False 
ActiveCell.FormulaR1C1 = "=TEXTJOIN(CHAR(10),FALSE,RC[-3]:R[30]C[-3])" 
Range("F" & Y).Select 
ActiveWindow.SmallScroll Down:=-30 
Range("F" & Y).Select 
Selection.Copy 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
    Y = Y + 1 
    Next T 

    End Sub 

http://imgur.com/XGwB4XR

+0

你需要出示你的代碼中已經有了,因爲StackOverflow的是不是一個免費的代碼編寫服務。 –

+0

它看起來像你試圖讓所有的非空值的列表B列的列表是按行分隔的飼料,使所有的值可以進入一個單元格。你是否試圖通過由空格或只有一個列表分隔的列B中的值組創建許多列表? – Jeeped

+0

@Jeeped有些方面,我有供應商和多個POS(採購訂單)我已經組織是一個供應商和其他POS機數據的列表。目標是將供應商和所有相應的pos複製到一個單元格中,直到腳本找到新的供應商。因此,一個新的非空白,它copys以上所有的細胞,因爲這些採購訂單對應於supplier.I要在B列的所有B中創建一個動作的所有單元格複製在下一欄的空白非空白列表。希望有所幫助。 –

回答

0

我難以理解你的數據的結構,但使用For Each x In Selection可能會幫助你。我假設你的數據至少是相似的下方,這裏的供應商名稱列A,和POS在B列

 
    | A | B | C | D | 
-----|-------|-------|-------|-------| 
    1 | s1 | PO1 |  |  | 
-----|-------|-------|-------|-------| 
    2 | s2 | PO2 |  |  | 
-----|-------|-------|-------|-------| 
    3 | s3 |  |  |  | 
-----|-------|-------|-------|-------| 
    4 | s4 | PO3 |  |  | 
-----|-------|-------|-------|-------| 

此代碼將複製任何供應商和PO(其中PO是不是空白)的列C和d:

outRow = 1 ' Set this to the index of the first row you want to output to 

' Run through each cell in Selection, left to right, top to bottom 
For Each selCell In Selection 
    ' Check for non-blank, but only if we're looking at column 2 (B) 
    If selCell.Column = 2 & selCell <> "" then 
    ' Store the selected Row and Column 
    sRow = selCell.Row 
    sCol = selCell.Column 

    ' Has the effect of prefixing ActiveSheet to any values that start with "." 
    With ActiveSheet 
     ' Copy value from cols 1 and 2 (A & B) to col 3 and 4 (C & D) 
     .Cells(outRow, 3).Value = .Cells(sRow, sCol - 1).Value 
     .Cells(outRow, 4).Value = selCell.Value 
    End With 

    outRow = outRow +1 ' Moves to next output row 
    End If 
Next 

在我的例子,假設你選擇A1:運行函數之前B4,你會得到下面的輸出。

 
    | A | B | C | D | 
-----|-------|-------|-------|-------| 
    1 | s1 | PO1 | s1 | PO1 | 
-----|-------|-------|-------|-------| 
    2 | s2 | PO2 | s2 | PO2 | 
-----|-------|-------|-------|-------| 
    3 | s3 |  | s4 | PO3 | 
-----|-------|-------|-------|-------| 
    4 | s4 | PO3 |  |  | 
-----|-------|-------|-------|-------| 

我猜你正在使用宏錄製選項來產生你有的代碼;這是學習VBA如何工作的好方法(我們大多數人都是這樣做的),但是不會產生很好的代碼。 Excel中內置的文檔實際上非常好,當你遇到錄音機的限制時,值得一看。

編輯:我越看你的問題,我就越不確定你是在問你在問什麼,但希望上面至少能夠把你推向正確的方向。

+0

我附上了問題中的數據應該喜歡的內容。請點擊鏈接。基本上,目標是自動複製和粘貼每個供應商的採購訂單。所以當代碼發現一個新的供應商複製了上面的所有PO。希望有所幫助。 –

+0

所以我認爲你正在做的事情會更容易用數據透視表來實現。或者你可以修改我所寫入值連接成你的列F.如果你不能修改我寫的是什麼,然後我會做你的功課,爲你和你無法修改它的時候事情會改變的。 –