首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当以上单元格满足条件时,在单元格中插入文本。

当以上单元格满足条件时,在单元格中插入文本。
EN

Stack Overflow用户
提问于 2016-11-25 13:18:55
回答 1查看 264关注 0票数 0

我有一个团体全年的时间表。第三行有一年的所有日期,下几行有每个组成员的名称。

A4:A9中规定的成员。假日在单元格A20:A28中指定。

所以,我想要做的是,可能通过VBA,制定一个类似于条件格式的规则,在B4:B9中插入单词"Holiday“,如果B3匹配日期为20澳元:28美元,然后插入C4:C9 (如果C3匹配等等)。

现在我不能在每个单元格中写入这个条件,因为它是每个成员使用的时间表,这是我在googling中经常得到的建议,而且我不能使用条件格式,所以我猜VBA是可行的方法,但是到目前为止我发现的VBA代码似乎使用了特定的单元格,并且不会遍历每一列。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-25 14:09:23

无需质疑您的一般方法,执行您计划做的工作的简单代码可以如下所示:

代码语言:javascript
复制
Option Explicit

Sub markhd()

    ' get calendardays, holidays and employees somehow into collections
    ' that can be looped. Since that information is stored in a worksheet,
    ' using ranges is one way to achive that

    ' holidays
    Dim rhd As Range
    Set rhd = ActiveSheet.Range("A20:A28")

    ' group employees
    Dim remp As Range
    Set remp = ActiveSheet.Range("A4:A9")

    ' calendar days
    Dim rcal As Range
    Set rcal = ActiveSheet.Range("B3:NB3")

    Dim c As Object

    ' Loop every day (every c-object in your calendar days), 
    ' then write "Holiday", if it matches an entry in your holiday-range
    For Each c In rcal
        If Not IsError(Application.Match(c, rhd.Cells, False)) Then
            remp.Offset(0, c.Column - remp.Column).Value = "Holiday"
        End If
    Next c

End Sub

注意:

  • @EganWolf提到的概念是查找类似的对象(本例中的日历日),并遍历它们,如果通过检查(日历日在假日范围内),则执行操作(写入“假日”)。有无数种不同的实现方法,我只是张贴了一个简单的例子。
  • 循环每个日历日,我们在这里进行365次迭代,试图在9个假期中匹配每个日历日。
  • 然而,我们可以反过来这样做:循环这9个假期,在365个日历日中匹配它们,因此只循环9次。理论上,性能可以双向变化,因为尽管迭代次数较少,但单个迭代可能需要更长的时间.但是,很明显,365天的表现仅仅是一个理论问题。

希望这能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40806003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档