2017-08-10 25 views
1

我創建其中從報表下載值的表格可以在一個輸入標籤粘貼模板,並與兩者之間的某個公式另一個選項卡上的格式化表格返回這些值。 E包含物品代碼的第1,2和3部分,F列包含行標題(例如可用數量,發票的訂單等)。我怎樣才能自動填充到包含在一列中使用宏的值,具有多種不同的公式中的最後一行?

之後的列(G到Z)主要包含將查找C列,D列,E列和F列的串聯的查找,列B出現。但是,行12和列24具有不同的公式,並且行15 & 16不含式。一個項目的數據佔用13行(在第12行和第24行之間)。

我一直在試圖找到一個宏,它可以像我選擇範圍B12:Z24一樣拖/自動填充公式並將其格式化到列A中包含值「X」的最後一行。「 X」在列A中所示是否有輸入標籤上的對應行中的值,並且可以出現在500行到8000行之間變化。

我有點初學者和所以無論我寫的是很基本的,但這裏是我試過:

Sub FillDown()  
    Range("B12:Z24" & Range("A" & Rows.Count).End(xlUp).Row).FillDown  
End Sub 

這個工程只是像任何更復雜的代碼中,我從谷歌拉。

此處是current result

一個例子下面是連接例如,我已經嘗試只是拷貝desired result

任何的/自動填充式和格式化從行12向下,而不是整個部分的表..任何建議?

**

  • UPDATE

** 道歉,我想通了這一個了幾個星期前,但忘了在這裏發表於:相反 創造新的部分(I」米主叫行12至24「的部分」),我創建一個表部分的一組數,並得到一些幫助,一個循環,轉換式從行13到行23(我想保持在排12和24中的式),併爲下面的部分做了相同的處理。需要一些時間在更大的範圍內,但要完成這項工作。 代碼:

Sub Pasteloop() 

Application.ScreenUpdating = False 

Dim i As Long 
Dim ii As Long 
Dim LastRow As Long 
Dim wb As Workbook 
Dim sht1 As Worksheet 
Dim j As Long 
Dim jj As Long 

Set wb = ThisWorkbook 
Set sht1 = wb.Sheets("Output") 

LastRow = 130 'a number 1 bigger than the last row to paste 
i = 13  'start row of the 1st select 
ii = 23  'end row of the 1st select 
j = 13  'start row of the 2nd select 
jj = 23  'end row of the 2nd select 
k = 7  'column number of the left hand column of the range 
p = 260  'column number of the right hand column of the range 

'This is the beginning of the loop 
Do While i < LastRow 
'set the next range as the previous range values 
sht1.Range(Cells(j, k), Cells(jj, p)) = sht1.Range(Cells(i, k), Cells(ii, 
p)).Value 
'move along to the next selection by incrementing everything by 12 
ii = ii + 12 
i = i + 12 
jj = jj + 12 
j = j + 12 
Loop 

Application.ScreenUpdating = True 

End Sub 

這已經降低了每週更新報告,開放時間從幾分鐘到秒。

+0

如果您的代碼依賴於它,屏幕截圖應包含列標題。爲什麼在代碼中填寫B列?您需要查找數據的最後一行。 – PatricK

+0

@PatricK道歉,我會更新屏幕截圖。我想B列不一定要包括在內,但爲了最小化整體公式的數量,我只會將其複製到有相關數據的地方 –

回答

0

而不是創造新的部分(我打電話行12至24「的部分」)的,我創建了一個具有一定數量段的表格,並得到了一些將公式轉換爲從第13行到第23行的值的循環(我想將公式保存在第12行和第24行中),併爲下面的部分。需要一些時間在更大的範圍內,但要完成這項工作。代碼:從分鐘到秒每週更新報告

Sub Pasteloop() 

Application.ScreenUpdating = False 

Dim i As Long 
Dim ii As Long 
Dim LastRow As Long 
Dim wb As Workbook 
Dim sht1 As Worksheet 
Dim j As Long 
Dim jj As Long 

Set wb = ThisWorkbook 
Set sht1 = wb.Sheets("Output") 

LastRow = 130 'a number 1 bigger than the last row to paste 
i = 13  'start row of the 1st select 
ii = 23  'end row of the 1st select 
j = 13  'start row of the 2nd select 
jj = 23  'end row of the 2nd select 
k = 7  'column number of the left hand column of the range 
p = 260  'column number of the right hand column of the range 

'This is the beginning of the loop 
Do While i < LastRow 
'set the next range as the previous range values 
sht1.Range(Cells(j, k), Cells(jj, p)) = sht1.Range(Cells(i, k), Cells(ii, 
p)).Value 
'move along to the next selection by incrementing everything by 12 
ii = ii + 12 
i = i + 12 
jj = jj + 12 
j = j + 12 
Loop 

Application.ScreenUpdating = True 

End Sub 

這減少開放時間,比複製/粘貼代碼,會做同樣的工作更高效,使您可以使用您的剪貼板,同時代碼正在運行,你不能使用複製/粘貼代碼。

0

,如果你只想讓數據在所有視覺不可見的,除了「可用數量」行,使用條件格式在行

您的例子開始12

小區C12 ....條件格式。 ...使用公式來確定單元格格式.... formula .... = C11 ....白色白色(設置爲紅色測試)

然後格式複製到三列的遠了,只要你喜歡

+0

請參閱更新的「Desired result」屏幕截圖,可能會使我希望做的更清楚一點 –

相關問題