vba查询代码

在excel中,每一行的B到J列我都合并居中了,L到S列也是合并居中了的。
第A列和第K列呢,我又是把几行合并居中了。
我现在要使用vba代码进行查询,条件是:
1、查询第B到J列(也包括L到S列)内的内容,如果查询到,则返回第A列(或第K列内)的值。请问代码应该怎么写??

2、把几列或几行进行合并居中后,这个单元格应该如何用坐标表示呢??

谢谢。
一楼的不错,只是还有2个细节没有考虑到:
1、查询第B到J列(也包括L到S列)内的内容,Sheet1.Cells(M, 2).Value="搜寻值" Then ,这个必须要全部字符串匹配吧,事实上我只查询这个单元格内的某一个词组啊。

2、 Msgbox Sheet1.Cells(M, 1).Value '返回第A列内容,

有可能查询到的第“M”行,并不是“最左最上角的单元格”,所以(M,1)其实是没有值的。
怎么解决呢?

1、查询第B到J列(也包括L到S列)内的内容,如果查询到,则返回第A列(或第K列内)的值。请问代码应该怎么写??

For M=1 to 最大行数
If Sheet1.Cells(M, 2).Value="搜寻值" Then '第2列代表合并后的B到J列
Msgbox Sheet1.Cells(M, 1).Value '返回第A列内容
End If

If Sheet1.Cells(M, 12).Value="搜寻值" Then '第12列代表合并后的L到S列
Msgbox Sheet1.Cells(M, 11).Value '返回第K列内容
End If
Next

2、把几列或几行进行合并居中后,这个单元格应该如何用坐标表示呢??
是以合并单元格中那个最左最上角的单元格坐标为准,如上面第一题的回答。

记得给分,:)
----------------------------------------------------------------------
1、查询第B到J列(也包括L到S列)内的内容,Sheet1.Cells(M, 2).Value="搜寻值" Then ,这个必须要全部字符串匹配吧,事实上我只查询这个单元格内的某一个词组啊。

那可以用模糊查询:If Instr(Sheet1.Cells(M, 2).Value,"搜寻值")>0 Then

2、 Msgbox Sheet1.Cells(M, 1).Value '返回第A列内容,
有可能查询到的第“M”行,并不是“最左最上角的单元格”,所以(M,1)其实是没有值的。怎么解决呢?

这个没有任何影响,也不会报错,例如第M行和第M+1行是行合并的单元格,且合并后的单元格内容为“测试”二字,则:
Msgbox Sheet1.Cells(M, 1).Value '返回的是“测试”二字
Msgbox Sheet1.Cells(M+1, 1).Value '返回的是“”空值,并不影响其他匹配和筛选操作、也不会报错,因此循环的时候就算轮到合并后的空行也没有关系的,你可以试试。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-22
实际就是合并的第一个单元格的坐标比如a1到a3合并 坐标即 cells(1,1)
第2个回答  2010-07-22
用find就行了,何必一个一个比对,
---------------
With Worksheets(1).Range("B:S")
Set c = .Find("搜寻值" , lookin:=xlValues,LookAt:=xlPart)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = "新值"
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
------------------
想要地址的话,用 c.Address 就行了