我现在处于一个有点困难的地方,我已经在网上搜索了几个星期,现在好运。我希望你们中的一些人可能会得到答案。
我想在一行中搜索具有特定数值的单元格。该行包含周数。当发现我希望能够像对象一样处理细胞时,或者至少我需要知道细胞的坐标以便进一步处理。
此外,该过程可以逆转。意思是,如果我有前一个单元格的坐标,我可以从同一行中的下一个单元格中获取值吗?
示例是: 在行中搜索本周的周数。 希望得到包含正确数字的单元格的坐标。
当我有那个专栏时,我想找到每个星期一到星期五为每个同事的单元格内容
如果这是由VBA或公式完成的,我无所谓。
提前多多感谢。 最好的问候Teambit
答案 0 :(得分:1)
不需要VBA ......你应该能够很容易地用公式实现它。
因此,单元格L3具有公式:=ADDRESS(3,MATCH($B$1,$A$3:$N$3,0))
。这将在输入到单元格MATCH
的一周内执行$B$1
,并在周$A$3:$N$3
范围内找到它。 ADDRESS函数将返回找到周数的单元格地址,因此在我的示例中为$G$3
。
然后下方网格/表格将显示当前周的工作周。 OFFSET
函数将单元格地址向下移动3行,然后在一周中的每一天向右移动1,2,3,4或6行。 OFFSET
将返回0表示空白,因此T
函数确保我们获得等效的文本,或空白而不是0.我使用INDIRECT
传递{ {1}}运行起始单元格地址,因此它使用的是起始周单元格(OFFSET
)的值,而不是该单元格($G$3
)。
我没有为每个工作人员添加任何内容,因此它始终使用第3行,但您可以使用$L$1
中的ADDRESS
获取单元格引用为一个名称,然后将其插入其他公式。
答案 1 :(得分:0)
我知道我是否理解你的问题,但如果你有细胞坐标,你就可以左边的下一个单元格你可以使用这样的东西
Sub findWeek()
Dim targetSheet As Worksheet
Set targetSheet = Sheets("Sheet1")
Dim l As Long
Dim row As Long
row = 2
Dim myVal As String
myVal = "some name of week you looking for"
Dim resultCell As Range
With targetSheet
Do While .Cells(row, l).Value <> myVal
l = l + 1
Loop
resultCell = .Cells(row, l)
End With
End Sub
所以我更新了答案,尝试这样的事情。只需更改工作表名称,可能是行,甚至是您要查找的名称。在值resultCell中,您将拥有您正在寻找的单元格对象。如果你看一下cell / range api,你可以得到它的坐标......
所以你可以使它成为一个能够返回范围的函数,或者你想要的任何东西......但总是在值中resultCell将是你正在寻找的单元格。 如果没有找到周,你可能需要注意;)因为这会陷入循环,但不是那么难
答案 2 :(得分:0)
检查这是否有帮助..
Sub SubOne()
Dim sh As Worksheet
Dim rw As Range
Dim iFoundIt As Range
Dim RowCount As Integer
' var to iterate trough rows
RowCount = 0
Set sh = ActiveSheet
For Each rw In sh.Rows
' iterate over all cells in first row
If sh.Cells(rw.Row, 1).Value = "ThisIsMySpecialValue" Then
' value is found, we save the cell for future options
Set iFoundIt = sh.Cells(rw.Row, 1)
Exit For
End If
RowCount = RowCount + 1
Next rw
Debug.Print (iFoundIt.Row)
Debug.Print (iFoundIt.Column)
End Sub