【问题标题】:Retrieve last entered Nth row and display it in a signle cell检索最后输入的第 N 行并将其显示在单个单元格中
【发布时间】:2015-08-05 22:25:41
【问题描述】:

我有两张 Excel 表格(比如说 Sheet1 和 Sheet2)。 Sheet1 有一个coloumnA,我每天在其中输入一些值。每天我都会收到 3 个值,每个值都将输入到 columnA 中。

例如: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 个值,并应将先前的值替换为最后输入的日期值。请告诉我如何使用公式来实现这一目标。

【问题讨论】:

    标签: excel excel-formula excel-2010


    【解决方案1】:

    假设“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”添加更多值时,值会更新

    【讨论】:

    • 实际上无法重建,因为它是我们公司的模板格式。其他列还有一些其他复杂的计算,我没有提到,因为它不是必需的。我有的可以吗?
    • 我更新了答案。它有点复杂,但希望它对你有用。
    • 实际上,您提供的第一个公式需要一个小改动来检索第三个值,第二个公式获取第一个值,第三个公式获取第二个值。但是非常感谢。像魅力一样工作
    【解决方案2】:

    这是一个您可以使用的小型 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 时运行此宏。
    为了方便使用,创建一个按钮并将此宏分配给它。

    【讨论】:

      【解决方案3】:

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

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

      函数 MyLastRow() MyLastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row 结束函数

      上述函数只会将“A”列视为数据列。

      【讨论】:

      猜你喜欢
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 1970-01-01
      相关资源
      最近更新 更多