【问题标题】:Excel VBA Set Range/Cells after searching/find a CellExcel VBA在搜索/查找单元格后设置范围/单元格
【发布时间】:2019-05-14 17:55:45
【问题描述】:

'我正在制作图表。首先,我想在“B”列中搜索关键字“A-test”,然后从我找到该词的位置选择 10 行和 2 列。我很难选择范围。请帮助在这种情况下如何使用“设置”功能。 这是我正在测试的宏

'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Sub Macro3()    
Macro3 Macro    
    Dim Ws As Worksheet    
    Dim i  As Long
    Dim k As Long
    Dim M As Range
    EndRow = ActiveWorkbook.Sheets("Sheet1").Range("B1").Offset(Sheets("Sheet1").Rows.Count - 1, 0).End(xlUp).Row
    i = 1
    For k = 2 To EndRow
        If Cells(k, 2) Like "*A*" Then
            Set M = Range("C1:L1", ActiveCell(i, 2).Offset(2, 10)) 'Difficult
            'Range("B1").Select 'test
            'Range("C1:L1,B4:L5").Select 'test
        End If
        'Cells(k, 2) Like "*A*"
    Next
End Sub
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

这是数据。

Date    choice  Sample#1    Sample#2    Sample#3    Sample#4    Sample#5    Sample#6    Sample#7    Sample#8    Sample#9    Sample#10
2018/07/12 00:06:58 A-test  105259  103495  105225  103923  104536  103196  105020  104316  105317  103021
2018/07/12 00:07:03 B-test  105260  103848  105225  103923  104535  103196  105020  104316  105316  103021
2018/07/12 00:07:47 A-test  103108  101758  102702  101784  102592  101688  103971  103345  104344  101513
2018/07/12 00:07:51 B-test  103109  101410  102701  101785  102592  101688  103970  103346  104344  101513
2018/07/12 00:15:48 B-test  103108  101409  102702  101785  102593  101688  103971  103345  104345  101513
2018/07/12 00:40:16 B-test  103108  101408  102701  101785  102592  101688  103971  103345  104344  101513

【问题讨论】:

  • 你的意思是 10 Columns and 2 Rows from Cells A-Test 吗?
  • 是的,但是“A-test”这个词会改变单元格的位置。在图表中,我试图比较“A-test”下方的“A-test”和“B-test”之间的数据,但我得到了多个“A-test”。

标签: excel vba if-statement graph find


【解决方案1】:

更快地使用Find 方法。这假设文本只出现一次,但如果不是这种情况,可以进行调整。

阅读this,了解您可能不需要选择任何内容的原因。

您可能想要交换 Resize 中的 10 和 2 - 不确定您想要在那里。

Sub y()

Dim r As Range

Set r = Sheets("Sheet1").Range("B:B").Find(What:="A-test", Lookat:=xlWhole, MatchCase:=False, SearchFormat:=False)

If Not r Is Nothing Then r.Resize(10, 2).Select '10 rows, 2 columns

End Sub

如果你想引用更大的范围,把它赋值给一个范围变量,然后你可以直接访问它的属性和方法,而不需要使用Select

Sub y()

Dim r As Range, rBig As Range

Set r = Sheets("Sheet1").Range("B:B").Find(What:="A-test", Lookat:=xlWhole, MatchCase:=False, SearchFormat:=False)

If Not r Is Nothing Then
    Set rBig = r.Resize(10, 2)
End If

'then do stuff with the 10x2 range
'eg colour it red
rBig.Interior.Color = vbRed

End Sub

【讨论】:

  • 谢谢。无论如何我可以使用“设置”或“设置联合”功能吗?
  • 不确定您的意思,但添加了一些代码 - 是您的意思吗?
  • 非常感谢。我会试试的。我犯了错误。以上。
  • 如果我还想同时选择 "Title = Range("C1:L1").Select "。我怎样才能做到这一点? Sub Macro3() ' ' Macro3 Macro ' ' Dim Ws As Worksheet Dim i As Long Dim k As Long Dim r As Range EndRow = ActiveWorkbook.Sheets("Sheet1").Range("B1").Offset(Sheets("Sheet1 ").Rows.Count - 1, 0).End(xlUp).Row i = 1 For k = 2 To EndRow Set r = Sheets("Sheet1").Range("B:B").Find(什么: ="A-test", Lookat:=xlWhole, MatchCase:=False, SearchFormat:=False) If Not r is nothing Then r.Resize(2, 11).Select Range("C1:L1").Select Next End子
  • 我在“Range(”中有一个标题“Sample#1 Sample#2 Sample#3 Sample#4 Sample#5 Sample#6 Sample#7 Sample#8 Sample#9 Sample#10” C1:L1").选择"。我想在调整选择大小时同时选择它们。谢谢。
猜你喜欢
  • 2012-11-15
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多