2016-12-14 130 views
0

我目前正在爲我們公司設計一個設備報告表。此工作表將從多個Excel工作表中獲取數據,並根據我們的自定義報告模板進行填充。到目前爲止,我已經設法找到如何合併多個工作表並找到列標題。但現在我被困在如何根據列標題找到最後一個非空值。Excel VBA - 基於列標題查找最後一個非空行

enter image description here

在上面圖片附件是示例數據。如您所見,每行中的最後一個非空單元格是該行的平均值。我想要做的是找到標題列(例如SVC525)並獲取列的最後一個非空值,這是平均值。

+2

LAST_ROW = ActiveSheet.Range( 「a1048576」)。完(xlUp).Row改變按您的要求 – Barney

+0

喜@barney,代碼你給單元格引用只是返回行號。我想要最後一行的值。對不起,如果我以前沒有提及。 – Jeeva

+0

你應該發佈你的代碼,以便我們可以定製一個答案。無論如何,這是Excel VBA 101.將x更改爲您的列'Cells(Rows.Count,x).End(xlUp)'。你應該看[EXCEL VBA簡介第5部分 - 選擇單元格(範圍,細胞,Activecell,結束,膠印機)的WiseOwlTutorials (https://www.youtube.com/watch?v=c8reU-H1PKQ&index=5&list=PLNIs- AWhQzckr8Dgmgb3akx_gFMnpxTN5&t = 3116s) – 2016-12-14 04:30:19

回答

0

對於給出的示例,B柱,這應該做的伎倆

Dim lastrow as Integer, val 
lastrow = Range("B" & Rows.Count).End(xlUp).Row 
val = range("B" & lastrow + 2).Value 

通過你的行(頭)不爲空迭代是另一回事,你可以輕鬆地搜索。

1

你可能會像在這之後

Dim svVal As String 

svVal = "SVC525" '<--| set your header value to be searched for in row 1 
With Worksheets("averages") '<--| change "Averages" tou your actual sheet name 
    MsgBox .Cells(.Rows.count, .Range("A1", .Cells(1, .Columns.count).End(xlToLeft)).Find(what:=svVal, LookIn:=xlValues, lookat:=xlWhole).column).End(xlUp) 
End With 
+0

@Jeeva,你會提供任何反饋? – user3598756

相關問題