检索上次输入的第N行并将其显示在单元格

时间:2015-08-05 12:35:16

标签: excel excel-formula excel-2010

我有两张excel表(比方说Sheet1和Sheet2)。 Sheet1有一个coloumnA,我在其中每天输入一些值。每天我将收到3个值,每个值将输入coloumnA。

例如:Sheet1。

                   ColoumnA

(cell 1) Day 1 ----> 1000
(cell 2)       ----> 2000
(cell 3)       ----> 3000
(cell 4) Day 2 ----> 1001
(cell 5)       ----> 2001
(cell 6)       ----> 3001
(cell 7) Day 3 ----> 1002
(cell 8)       ----> 2002
(cell 9)       ----> 3002

Sheet2有三个单元格,我将再次手动输入这些值以准备每日报告。并且前一天的值将被当前的值替换。所以我需要Sheet2从Sheet1自动显示这些值。因此,Sheet2中的每个单元格应该获取每个第4个值,并且应该使用上次输入的日期值替换先前的值。请告诉我如何用公式实现这一目标。

3 个答案:

答案 0 :(得分:0)

这是一个可以使用的小vba宏。

Sub UpdateDataLastRows()
        Dim LastRow
        Worksheets("Sheet1").Select
        LastRow = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
        Range("A1") = CStr(LastRow)
        Worksheets("Sheet2").Cells(2, 1) = Worksheets("Sheet1").Cells(CStr(LastRow) - 2, 1)
        Worksheets("Sheet2").Cells(3, 1) = Worksheets("Sheet1").Cells(CStr(LastRow) - 1, 1)
        Worksheets("Sheet2").Cells(4, 1) = Worksheets("Sheet1").Cells(CStr(LastRow), 1)
End Sub  

每次输入数据以更新Sheet2时都要运行此宏 为了便于使用,请创建一个按钮并将此宏指定给它。

答案 1 :(得分:0)

如果您确定数据之间没有空白行。 你可以使用CountA函数来了解所有 = Counta(A:A)将给出非空白单元格。

如果您之间有空白单元格:您可以使用vba函数。

功能MyLastRow() MyLastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count," A")。End(xlUp).Row 结束功能

以上功能只会考虑" A"列为数据列。

答案 2 :(得分:0)

假设“Sheet1”具有以下格式:

Column A
Value 1
Value 2
Value 3
etc..

然后在工作表2中,您可以使用以下公式获取3个值中每个值的最新值:

Formula for value1: =IF(MOD(COUNTA(Sheet1!A:A);3)=0;INDEX(Sheet1!A:A;COUNTA(Sheet1!A:A)-2);INDEX(Sheet1!A:A;FLOOR(COUNTA(Sheet1!A:A);3)+1))
Formula for value2: =IF(MOD(COUNTA(Sheet1!A:A);3)>1;INDEX(Sheet1!A:A;COUNTA(Sheet1!A:A));INDEX(Sheet1!A:A;FLOOR(COUNTA(Sheet1!A:A);3)-1))
Formula for value3: =INDEX(Sheet1!A:A;FLOOR(COUNTA(Sheet1!A:A);3))

请注意,在向“Sheet1”

添加更多值时,这些值会更新