gpt4 book ai didi

excel - 给定 2 个日期时查找单元格范围

转载 作者:行者123 更新时间:2023-12-02 23:48:08 27 4
gpt4 key购买 nike

我有一个表格,其中包含从 1 到 10 的数字。(从 D2 到 M2)

假设A1中有03/09/2019

并且在B1中有06/09/2019

并且在C1中有Hello

A 列中,我有多个系列的单词,从A3 到A10

这是 Excel 表格的示例

enter image description here

我想做的是:在A列搜索单词学生,当我找到它时,从A1 --> 3A2 --> 6 并在找到的单词 Student< 所在行的 3 到 6 行的单元格中写入单词 Hello that is in C1/strong>

所以我的输出是这样的:

enter image description here

这是我到目前为止的代码:

Dim Cell As Range
Columns("A:A").Select
Set Cell = Selection.Find(What:="Student", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)

If Cell Is Nothing Then
MsgBox "Word not found"

Else
MsgBox "Word found"
End If

基本上我可以找到学生这个词,但不知道如何在3到6之间的单元格中写出Hello这个词

最佳答案

有关以下代码的一些注释(未经测试!)。

1) 使用 VBA 时始终尝试使用工作表限定符。这将使代码更干净,减少不必要的错误的空间

2) 当使用 .Find 方法时,我使用 LookAt:=xlWhole 因为如果您没有显式定义它,您的代码将使用您将拥有的最后一个已知方法在 Excel 中使用。同样,明确的定义可以减少出错的空间。

3) 尝试在编码时包含错误处理。这提供了“断点”,以便将来更轻松地进行调试。

4) 您可以使下面的内容比当前更加动态。但我会将其留给您来学习如何操作!

Option Explicit

Sub SearchAndBuild()

Dim rSearch As Range
Dim lDayOne As Long, lDayTwo As Long
Dim lColOne As Long, lColTwo As Long
Dim sHello As String
Dim wsS1 As Worksheet
Dim i As Long


'set the worksheet object
Set wsS1 = ThisWorkbook.Sheets("Sheet1")
'store variables
lDayOne = Day(wsS1.Range("A1").Value)
lDayTwo = Day(wsS1.Range("B1").Value)
sHello = wsS1.Range("C1").Value

'find the student first
Set rSearch = wsS1.Range("A:A").Find(What:="Student", LookAt:=xlWhole)

'error handling
If rSearch Is Nothing Then
MsgBox "Error, could not find Student."
Exit Sub
End If

'now loop forwards to find first date and second date - store column naumbers
'adjust these limits where necessary - can make dynamic
For i = 4 To 13
If wsS1.Cells(2, i).Value = lDayOne Then
lColOne = i
End If
If wsS1.Cells(2, i).Value = lDayTwo Then
lColTwo = i
Exit For
End If
Next i

'now merge the range
wsS1.Range(wsS1.Cells(rSearch.Row, lColOne), wsS1.Cells(rSearch.Row, lColTwo)).Merge

'set the vvalue
wsS1.Cells(rSearch.Row, lColOne).Value = sHello

End Sub

这只是解决该问题的一种方法。希望这有助于您的理解!

关于excel - 给定 2 个日期时查找单元格范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58170045/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com