【问题标题】:Excel VBA-Display Text in a Cell Based on Previous Cell's DataExcel VBA-根据前一个单元格的数据在单元格中显示文本
【发布时间】:2018-10-16 14:19:54
【问题描述】:

请多多包涵,因为我对 VBA 还很陌生。请参阅所附图片。

我正在寻找代码,以根据前 5 个单元格是否为空白,从单元格 G2 开始,用“是”或“否”填充“摘要”表上的单元格。请注意,“摘要”表中的数据是从“原始数据”表中提取的。

例如员工 1:“摘要”表上的单元格 G2 将显示“否”,因为范围 'Raw Data'!B2:F2 中的所有单元格都不是空白的。与 H2 相同,因为 'Raw Data'!C2:G2 中的所有单元格都不是空白的。 I2 将显示“是”,因为在“原始数据”范围内有一个空白单元格!D2:H2。

对于在 A 列中有数据的每一行,这将继续。

提前谢谢你,如果我没有充分解释,请告诉我, 凯文

【问题讨论】:

  • 为什么不使用一个简单的公式呢?

标签: excel vba


【解决方案1】:

在摘要表的 G2 中输入以下公式:

=IF(COUNT('Raw Data'!B2:F2)=5,"No","Yes")

然后,您可以根据需要将其拖动到右侧(然后向下)。

这里稍作修改,空行不显示“是”:

=IF('Raw Data'!B2="","",IF(COUNT('Raw Data'!B2:F2)=5,"No","Yes"))

【讨论】:

  • 我有一个公式,类似于你发布的。但是,我认为宏会更好地处理更多参数。对不起,我应该在我的原始描述中更具体。我只是不确定目前的附加参数是什么。
【解决方案2】:

这已经过测试,现在一切都应该正常工作,不确定您是否仍然需要答案,但“摘要”选项卡应用了一些条件格式,如果是,则明显突出绿色,如果不是,则突出显示红色。在原始数据选项卡我输入了随机值,但这无关紧要,除非有我不知道的东西。

Sub Yes_No()


Dim lastrow As Long
Dim lastcol As Long
Dim wb As Workbook
Dim ws As Worksheet
Dim ws2 As Worksheet


Set wb = ActiveWorkbook
Set ws = wb.Sheets("Summary")
Set ws2 = wb.Sheets("Raw Data")
lastcol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
lastrow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

 For i = 2 To lastrow
   For j = 7 To lastcol


  If ws2.Cells(i, j - 1) <> "" And _
     ws2.Cells(i, j - 2) <> "" And _
     ws2.Cells(i, j - 3) <> "" And _
     ws2.Cells(i, j - 4) <> "" And _
     ws2.Cells(i, j - 5) <> "" Then

       ws.Cells(i, j).Value = "Yes"

  Else

       ws.Cells(i, j).Value = "No"


 End If


   Next j
 Next i





End Sub

【讨论】:

  • 谢谢!我会试一试。我的目标是以此为基础,因为有更多的参数。这将是一个很好的开始!谢谢!
  • 现在应该可以工作了,假设“原始数据”和“摘要”工作表的数据都从单元格 A1 开始。
  • 嘿@Kevin,如果您认为此答案是您要寻找的完整答案,请选中此框,以便其他人知道此问题已得到解答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-21
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
相关资源
最近更新 更多