【问题标题】:Excel pulling data from certain cellsExcel从某些单元格中提取数据
【发布时间】:2011-09-07 04:01:29
【问题描述】:

我有一个文件,我只想在整个文件中以某种模式提取单元格 B9、B19、B29 等。我希望将其提取到不同的 excel 文件或以某种方式提取,以便我可以仅使用另一个 excel 工作表中的那些单元格进行处理。

可能,我可能有几个 excel 文件,我可能需要做这种事情,所以如果有一种方法可以让我在很多文件中使用相同的格式,我总是可以提取单元格 B9、B19、B29会很好。任何帮助表示赞赏

如果可能的话,我会寻找语法

编辑

正在考虑是否可以以某种方式制作一个 excel IF 语句,说明如果 Row 有 9 并且行是 B 然后在某处打印它,但我希望它打印在一列中

编辑 2 我只想要 B 列而不是我之前提到的 A 列。 B9, B19,B29,B39 贯穿整个文件

【问题讨论】:

    标签: vba excel if-statement excel-2007


    【解决方案1】:

    以防万一你想用代码来做:

    Sub Test()
      'Assumes Sheet1 has your values and Sheet2 will be the data extracted from every row ending in 9
      Dim iCounter As Long
      Dim newSheetRow As Long
      Dim aValue As String
      Dim bValue As String
    
      newSheetRow = 1
      'Start and nine and increment by 10 till you reach end of sheet
      For iCounter = 9 To Sheet1.Rows.Count - 1 Step 10 'NOTE:  You may not want to do it by RowCount, but just showing you could
          aValue = Sheet1.Range("A" & iCounter)
          bValue = Sheet1.Range("B" & iCounter)
    
          Sheet2.Range("A" & newSheetRow).Value = "We were on row: " & iCounter
          Sheet2.Range("B" & newSheetRow).Value = aValue
          Sheet2.Range("C" & newSheetRow).Value = bValue
          newSheetRow = newSheetRow + 1
      Next iCounter
    
      MsgBox "Done"
    End Sub
    

    【讨论】:

    • 耶稣...我当然希望如此! :D
    【解决方案2】:

    您可以使用 INDIRECT 函数。它将单元格引用作为文本字符串并返回该单元格中的值。所以不要使用

    =data!a9
    

    要获取单元格 a9 中工作表“数据”中的值,请使用

    =indirect("data!a9")
    

    您也可以使用 r1c1 表示法,如下所示:

    =indirect("data!r9c1",false)
    

    从那里您可以使用 ROW 和 COLUMN 函数按 10 步进行:

    =INDIRECT("data!r"&-1+10*ROW()&"c"&COLUMN(),FALSE)
    

    如果您将此公式放在输出表的 A1 中,然后将其复制并向下粘贴,它将在单元格 A1 中为您提供 data!A9、data!A19、data!A29、...中的值, A2、A3...根据您希望输出的排列方式,您可能需要修改单元格引用字符串。

    【讨论】:

    • 它给了我一个 REF 错误,但如果我想在 B soooo 中这样做,我需要复制并粘贴 =INDIRECT("data!r"&-1+10*ROW()& "c"&COLUMN(),FA​​LSE) 从 B 列的顶部开始(没有数据,因为如果我把它放在一个有数据的单元格中,它只会覆盖它?)然后将它拖过列?
    • 如果您想要的数据位于单元格 A9、B9、C9、A19、...中的工作表“数据”中,并且您希望单元格 A1、B1、C1 中的工作表“输出”中的输出, A2,...,然后将该公式放入单元格 A1、B1、C1、A2、...的工作表“输出”中
    • 感谢您的帮助,并对所有问题表示歉意:我只想要整个文件中该模式中 B9、B19、B29、B39 的值
    • 没问题。这应该可以解决问题,因为您只需要第 2 列: =INDIRECT("DATA!R"&-1+10*ROW()&"C2",FALSE)
    • 好的,让我解释一下它在做什么:我想要工作表 1 B9、b19 等上的数据。你想让我把公式放在表 2 中(也就是单击底部的链接打开另一张表)在单元格 A1 中输入公式,上面写着#REF!它似乎不知道它在哪里。抱歉,我的意思是添加 B0、B9、B19... 等
    【解决方案3】:

    根据您想要执行此操作的频率,取决于您需要如何执行此操作,如果是其中之一,一些简单的 excel 命令可能会有所帮助。

    例如

    在 C1 单元格中输入以下内容:

    =MOD(ROW(),10)
    

    然后将其复制到数据的底部。该命令将返回从 1 到 0 的数字。然后,您可以过滤值为 9 的列 C 上的数据,然后选择可见行并将数据复制到新工作表中。

    ROW()  ' this returns the ROW number of cell the command is in.
    MOD(number, divisor) ' this basically divides one number by the other and returns the remainder. so row 9 / 10 = 0 remainder of 9, row 19 / 10 = 1 remainder of 9.
    

    希望这会有所帮助。

    【讨论】:

    • 问题是还有其他列 C、D、E 也将有一行与第 9、19、29、39、49、59 行相关联。我不确定你的回答是否有帮助,因为我有点困惑它是否能满足我的需要。
    • @Tyler31 我猜您希望在新工作表/工作簿上的 A 到 E 行 9、19、29 等 - 如果您将“=mod(row(),10)”放入最后一列和过滤器(例如列 F 然后您可以只将可见的过滤行复制到新工作表/工作簿
    • 我只想要 B 列。B0、B9、B19、B29、B39 等
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    相关资源
    最近更新 更多