我有两张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个值,并且应该使用上次输入的日期值替换先前的值。请告诉我如何用公式实现这一目标。
答案 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”
添加更多值时,这些值会更新