1.EXCEL VBA 中关于查询代码如何编写
问题太笼统,给你个例子看吧
Public Sub dsa()
Dim iObjRange As Range: Set iObjRange = Range("A1:A10000") '对比的目标区域
Dim iFindRange As Range: Set iFindRange = Range("K:K") '查找的目标区域
Dim iResult As Range: Set iResult = Range("J:J") '结果的输出区域
Dim iCell As Range, iFind As Range
For Each iCell In iObjRange
If iCell <> "" Then
'下面这句是主要的查询语句
Set iFind = iFindRange.Find(iCell.Value, LookIn:=xlValues, LookAt:=xlWhole)
If iFind Is Nothing Then
iResult.Cells(iCell.Row, 1).Value = "N"
Else
iResult.Cells(iCell.Row, 1).Value = "Y"
End If
End If
Next
End Sub
2.vba查询代码
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 '返回的是“”空值,并不影响其他匹配和筛选操作、也不会报错,因此循环的时候就算轮到合并后的空行也没有关系的,你可以试试。
3.excel vba代码要怎么写
用如何代码可实现,假设原数据在A、B列
Sub main()
Set dic = CreateObject("scripting.dictionary")
arr = Range("A1").CurrentRegion
For i = 1 To UBound(arr)
If dic.exists(arr(i, 2)) = False Then
dic(arr(i, 2)) = arr(i, 1)
Else
If dic(arr(i, 2)) dic.Remove arr(i, 2)
dic(arr(i, 2)) = arr(i, 1)
End If
End If
Next i
[E1].Resize(dic.Count, 1) = Application.Transpose(dic.keys)
[D1].Resize(dic.Count, 1) = Application.Transpose(dic.items)
End Sub
详细步骤如下:
1. 原数据
2. Alt+F11,选择sheet1,复制上述代码
3. 关闭返回工作表,alt+F8,掉出宏界面
4. 点击执行,即得到想要的结果:
4.请帮忙写一个Excel VBA查找的代码,不胜感激
Sub 查找北京或者上海()
Dim arr
MyRow = ActiveSheet.[E65536].End(3).Row 'E例最后一行的行号
arr = Range("E1:E" & MyRow) 'E例字符串赋值给数组arr
For Each sh In arr '循环
I = I + 1
If InStr(sh, "上海") Or InStr(sh, "北京") <> 0 Then '如果数组字符串中包含上海或者北京
Range("E" & I).Select '选中对应的单元格
Selection.Interior.ColorIndex = 6 '单元格背景黄色
Selection.Font.ColorIndex = 3 '字体红色
End If
Next
End Sub
5.怎么查看excel的VBA代码
按住ALT+F11弹出VBA编辑器。
只是要破解么?
新建一个Excel工作簿,Alt+F11 打开VBA编辑器,新建一个模块 ,复制以下代码,注意如提示变量未定义,则把Option Explicit行删除即可,经测试已经通过.
'移除VBA编码保护
Sub MoveProtect()
Dim FileName As String
FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")
If FileName = CStr(False) Then
Exit Sub
Else
VBAPassword FileName, False
End If
End Sub
'设置VBA编码保护
Sub SetProtect()
Dim FileName As String
FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")
If FileName = CStr(False) Then
Exit Sub
Else
VBAPassword FileName, True
End If
End Sub
Private Function VBAPassword(FileName As String, Optional Protect As Boolean = False)
If Dir(FileName) = "" Then
Exit Function
Else
FileCopy FileName, FileName & ".bak"
End If
Dim GetData As String * 5
Open FileName For Binary As #1
Dim CMGs As Long
Dim DPBo As Long
For i = 1 To LOF(1)
Get #1, i, GetData
If GetData = "CMG=""" Then CMGs = i
If GetData = "[Host" Then DPBo = i - 2: Exit For
Next
If CMGs = 0 Then
MsgBox "请先对VBA编码设置一个保护密码。", 32, "提示"
Exit Function
End If
If Protect = False Then
Dim St As String * 2
Dim s20 As String * 1
'取得一个0D0A十六进制字串
Get #1, CMGs - 2, St
'取得一个20十六制字串
Get #1, DPBo + 16, s20
'替换加密部份机码
For i = CMGs To DPBo Step 2
Put #1, i, St
Next
'加入不配对符号
If (DPBo - CMGs) Mod 2 <> 0 Then
Put #1, DPBo + 1, s20
End If
MsgBox "文件解密成功。。", 32, "提示"
Else
Dim MMs As String * 5
MMs = "DPB="""
Put #1, CMGs, MMs
MsgBox "对文件特殊加密成功。。", 32, "提示"
End If
Close #1
End Function
6.vba查询代码
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 IfNext2、把几列或几行进行合并居中后,这个单元格应该如何用坐标表示呢?? 是以合并单元格中那个最左最上角的单元格坐标为准,如上面第一题的回答。记得给分,:) ----------------------------------------------------------------------1、查询第B到J列(也包括L到S列)内的内容,Sheet1.Cells(M, 2).Value="搜寻值" Then ,这个必须要全部字符串匹配吧,事实上我只查询这个单元格内的某一个词组啊。
那可以用模糊查询:If Instr(Sheet1.Cells(M, 2).Value,"搜寻值")>0 Then2、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 '返回的是“”空值,并不影响其他匹配和筛选操作、也不会报错,因此循环的时候就算轮到合并后的空行也没有关系的,你可以试试。
转载请注明出处育才学习网 » vba查询代码怎么写