繁体   English   中英

VBA用于检查行并将返回条件的单元格返回到另一个工作表

[英]VBA for checking rows and returning cells that match criteria to another sheet

我正在努力开发针对以下挑战的自动化解决方案(例如,除了按按钮之外,无需用户干预):我有一个主工作表,该工作表的每月列中包含应计数字,并在列中包含与此相关的收据编号立即向右。 收据栏的月份格式为:“ Feb”,“ Jun”,“ Dec”在顶部。

我需要从符合以下条件的每一行中,将各种单元格数据返回到工作簿中的另一个“摘要”工作表:

  1. 根据月份与“摘要”表中单元格“ x”中输入的月份的月份匹配来确定“收据”列,例如,如果我键入“ Mar”,请在主“表”中找到标题为“ Mar”的列。
  2. 忽略空白行(即列A中有数据),如果“收据”列第一行中的单元格为空白,则标识该行,选择6个不同的单元格,然后将内容返回到第一行空白行中的6个特定单元格(从摘要表中的给定行号),然后移至该列的下一行,并继续此过程,直到结束(或行数限制)为止。 注意:“空白”单元格将具有填充颜色(有条件格式化)。

如果单元格包含数据,请移至下一行并继续该过程。 我可以将VBA例程附加到屏幕上的按钮上,以便每次更新结果都可以很好地完成工作。 尽管我在这里获得了一些非常有用的代码,例如用于检查给定条件下的每一行,但是我仍然无法解决一个可行的解决方案,包括将相关单元格返回到摘要表中。

任何和所有反馈非常感谢。

(抱歉-尚无法发布图片/屏幕截图...)


更新感谢您的快速响应,Apols无法追加/粘贴电子表格示例-显然我需要10分... :)

汇总表(Sheet1)略有不同。 列为:月(Col A),然后是4个单元格(TBD)要返回到cols BE,然后是收据编号(Col F)。 数据来自主表(Sheet4)中每个已标识的行,并放置在Sheet1中的下一个可用空白行中。 我可以修改任何示例以匹配实际位置。

我有选择行的标准(这是从我已经确定行的循环中进行的,但是在特定月份使用固定的列引用[26-Col Z]):

如果不是,则Cells(TheRow,3).Value =“” And Cells(TheRow,26).Value =“” And Cells(TheRow,6).Value <Cells(TheRow,25).Value然后...(执行我被卡住了)

希望这一点更加清楚。 感谢您的帮助。


无法添加评论或聊天(!),因此需要进一步更新:

谢谢Tony摘要中的month列用于确认报告的月份,因为当用户覆盖要与之一起解析母版表的月份的源单元格时,此列将更改。 此数据转到的人将获得这7列,仅此而已。 该机制必须找到收据列(月),然后确定行条目为空,并且该行的列3不为空,并且应计值[Rng.Column-1]大于PO值(列4)在那排。 一旦建立了这些标准,就可以选择收据,应计,采购订单和其他3个数据,将其复制并粘贴到摘要表中的下一个可用空白行上。

母版表每个月都有应计和收据,因此只有一栏可以标识。

希望这可以帮助...

我正在努力使您的工作表可视化。 我将主表视为:

 ... |Accrual|  Jan|Accrual|  Feb|Accrual|  Mar|Accrual|  Apr| ...
 ... |   1.23|A12  |       |     |  23.67|A14  |       |     |
 ... |       |     |  56.78|C34  | 178.12|C56  |       |     |
 ... |   2.34|B678 |       |     |       |     | 123.82|B821 |
 ... |       |     |       |     |  96.52|D56  |       |     |

在“摘要”表中的某处,有一个感兴趣的月份列表。

我需要一个变量:

Dim MonOfInt As String

和一个循环,其中一个月的时间将从工作表加载到此变量中:

With Sheets("Summary")
  MonOfInt = .Cells(R, C).Value
End With

以下是代码移动感兴趣月份的值的可能框架:

Dim ColCrnt As Long
Dim Rng As Range
Dim RowCrnt As Long
Dim RowLast As Long
  :

With Sheets("Master")
  ' Look for month of interest in row 1
  Set Rng = .Rows(1).Find(MonOfInt)
End With

If Rng Is Nothing Then
  ' No columns for this month in Master

Else
  ' Accrual and Receipt columns for this month found
  ColCrnt = Rng.Column - 1        ' Accrual column for month
  ' Find last used row in Accrual column
  RowLast = .Cells(Rows.Count, ColCrnt).End(xlUp).Row
  For RowCrnt = 2 To RowLast

    ' Code to extract values from Master and move to Summary here

  Next

  End If

End With

如果您可以在问题中添加信息以确认我的可视化并提供有关以下方面的更多信息:(1)如何检测某行是否为空白(除了测试整个行(可选)之外,以及(2)该行的来源和目标六个单元格,然后我将尝试填补这个答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM