vba查询代码怎么写
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复制代码怎么写
1.excel用vba实现内容的复制代码怎么写
打开工作表,找到原数据,。
插入表单按钮。ALT+F11打开VBA代码编辑器,输入宏代码如下。
将表单按钮指定到宏,运行代码。查看运行后的效果,目标区域出现了和原数据一样的数据,但位置发生了变化。
输入的代码内容并解释。Sub 运行代码()For i = 1 To 12Range("c" & i + 2) = Range("b" & i)Next iEnd Sub1.原数据单元格区域 b1 b2 b3 b4 到 b12;2.目标单元格区域出现 c3 c4 c5 c6 c7 到 c14;3.原数据区域在后,目标区域在前;4.目标区域和原数据之间的相同数据之间的位置变化:原数据与目标区域之间行号之差;5.使用FOR NEXT循环,步长为1,步长为目标单元格行号之差。
2.Excel VBA 复制特定行的代码该如何写
Sub aa()
i = Sheet1.[b65536].End(xlUp).Row
For j = 1 To i
If Sheet1.Cells(j, 2) = "C大队" Then
k = k + 1
Sheet1.Rows(j).Copy Sheet2.Cells(k, 1)
End If
Next
End Sub
以上代码从SHEET1复制到SHEET2
3.请问VBA复制粘贴代码
Sub Demo()
' 最简洁的写法.
[A2] = [A1]
' 相对地址法.
Range("A2").Value = Range("A1").Value
' 绝对地址法.
Range("$A$2").Value = Range("$A$1").Value
' 利用 Cells 集合指定要写入的单元格.
Cells(2, 1).Value = Cells(1, 1).Value
End Sub
4.怎么用vba把vba代码复制粘贴
试试下面的代码:
Sub Macro1()
Dim MyPath$, MyName$, sh As Worksheet, m&, w As WorksheetFunction, wb As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set w = WorksheetFunction
MyPath = ThisWorkbook.Path &; "\采集多数据"
MyName = Dir(MyPath & "*.xls*")
[a1].CurrentRegion.Offset(1).ClearContents
Do While MyName ""
With GetObject(MyPath & MyName)
With .Sheets(1)
If w.CountA(.UsedRange.Offset(1)) Then
m = m + 1
If m = 1 Then
Set wb = Workbooks.Add(xlWBATWorksheet)
Set sh = wb.ActiveSheet
.[a1].CurrentRegion.Copy sh.[a1]
Else
.[a1].CurrentRegion.Offset(1).Copy sh.[a65536].End(xlUp).Offset(1)
End If
End If
End With
.Close False
End With
MyName = Dir
Loop
wb.SaveAs Filename:=ThisWorkbook.Path &; "\采集多数据20130422.xls", FileFormat:=xlExcel8
wb.Close
Application.ScreenUpdating = True
MsgBox "ok"
End Sub
5.复制表的vba代码
我的思路:在有模板的工作簿中,建立一个木块,并输入下列代码。
Sub 复制模板工作表()
Dim W As Workbook '定义变量W为工作簿对象
For Each W In Workbooks '遍历已经打开的工作簿对象
If W Is Application.ThisWorkbook = False Then '如果W工作簿对象和代码所在工作簿对象比较,不相同,则执行。IS是比较运算符,比较两个对象是否相同,相同返回True,不相同返回False。你可以查基础书籍。
Application.ThisWorkbook.Worksheets("模板").Copy After:=W.Worksheets(W.Worksheets.Count) '将代码所在工作簿中的模板工作表拷贝到W工作表的最后一个工作表之后。
End If
Next
End Sub
我也是新手,不过喜欢!
6.excel VBA 复制sheet到另一表格的sheet 代码怎么写,详细如下
Dim Book2 As Workbook
Dim tmpSt As Worksheet
Set Book2 = Workbooks("2")
For Each tmpSt In ActiveWorkbook.Sheets
tmpSt.Activate
tmpSt.Cells.Select
Application.CutCopyMode = False
Selection.Copy
Select Case tmpSt.Name
Case "A"
Book2.Sheets("数据1").Activate
Case "B"
Book2.Sheets("数据2").Activate
Case "C"
Book2.Sheets("数据3").Activate
Case "D"
Book2.Sheets("数据4").Activate
Case "E"
Book2.Sheets("数据5").Activate
Case "F"
Book2.Sheets("数据6").Activate
Case "G"
Book2.Sheets("数据7").Activate
Case "H"
Book2.Sheets("数据8").Activate
End Select
ActiveSheet.Paste
Next
前提是表1和2要打开,在表1运行。而且两个表的表名按你所述是已经建立的,如果表名不对应,将会运行错误。
vba代码怎么写
1.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. 点击执行,即得到想要的结果:
2.VBA代码在哪里写 怎么用
打开EXCEL-"工具"-"宏"-"Visual Basic 编辑器"
选择相应的表文件就能输入代码.
但提议:
如有控件按钮的,编辑状态下直接在按钮击就能打击输入代码的窗口了.
如是表格单元的公式运算,先试用"工具"-"宏"-"录制新宏" 将几个要用的操作录制起来,再按上面的方式打开VBS编辑器去看看代码怎写的,学习一下标准代码的规范.
(新手用点笨办法没坏处,太高级经常有遇想不到的错误发生.)
3.excel vba 这段代码怎么写
好了写完了。
7a686964616fe58685e5aeb931333236373264注,原数列必须要A列,代码加入后,在excel中双击就可以了。Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)i = 1newi = 1newj = 1Do While (IsNumeric(ActiveSheet.Cells(i, 1))) And (CStr(ActiveSheet.Cells(i, 1)) <> "")If CInt((i - 1) / 9) = (i - 1) / 9 Then ActiveSheet.Cells(newi, newj) = ActiveSheet.Cells(i, 1) newi = newi + 1Else ActiveSheet.Cells(newi, newj) = ActiveSheet.Cells(i, 1) If newj < 4 Then newj = newj + 1 Else newj = 1 newi = newi + 1 End IfEnd Ifi = i + 1LoopFor x = newi To i ActiveSheet.Cells(x, 1) = ""NextEnd Sub。
4.怎么写一段excel vba 输入代码
1. 从Excel工具栏中插入一个VBA的控件-编辑框。
2. 双击这个编辑框,进入VBA编程窗口。
3. 删除原来的所有内容,输入以下内容:
Private Sub TextBox1_LostFocus()
Range("A1").Value = TextBox1.Text
End Sub
4. 关闭编程窗口,回到Excel界面。
5. 在编辑框中输入一个字串。
6. 用鼠标点击编辑框之外的其它地方,看看所输入的字串是不是出现在A1
5.VBA代码中怎么写连加
可以借用EXCEL的求和公式:
如:
[c1] = Application.WorksheetFunction.Sum(Range("a1:b5"))
可以对单元格区域a1:b5求和,并把结果写在C1单元格
如果直接写的话,别忘了在单元格两边加上中括号:
如:
A=[A1]+[A3]+[A5]
可以把A1,A3,A5的和赋值给变量A
补充回答:
下面代码可以把A1到A100的和赋值给变量A
dim i ,a as long
a=0
for i=1 to 100
a=a+cells(i,1)
next i
对于VBA,一般尽量避免用循环的方法:它的效率是比较低的!
楼主什么意思?这有什么区别么?CELLS函数行和列用的都是数字,直接用就行了
最简单的方法:用循环嵌套
dim i,j,a as long
a=0
for j=1 to 10
for i=1 to 100
a=a+cells(i,j)
next i
next j
连续区域也可以用for each循环:
Dim cell1, a As Long
a = 0
For Each cell1 In Range("a1:c100")
a = a + cell1
Next
6.求VBA代码写法
Sub abc()
Dim C As Range, rng1 As Range, rng2 As Range, Arr
With Workbooks("A.xls")
Arr = .Sheets("sheet1").Range("A1:A3")
With .Sheets("B")
Set rng1 = Application.Intersect(.Range("B:B"), .UsedRange)
End With
For Each C In rng1
tmp = C.Value
If InStr(1, tmp, Arr(1, 1)) Or InStr(1, tmp, Arr(2, 1)) Or InStr(1, tmp, Arr(3, 1)) Then
'如果这个单元格含有( a 或 b 或 c ),执行的动作写这里
End If
Next
End With
End Sub
7.求以下的VBA代码怎样写
操作方法: 在工作表标签上点鼠标右键,选择“查看代码”,在弹出的窗口中粘贴以下内容,你的工作表就具有你想要的功能了: Option ExplicitPrivate Sub Worksheet_Change(ByVal Target As Range) Dim c As Range, x As Long, y As Long, s As String For Each c In Target.Cells x = c.Column If x = 5 Then y = c.Row If InStr(c.Value, "CE Material") <> 0 And InStr(c.Value, "E/") <> 0 Then s = "正常项目/MOD1" ElseIf InStr(c.Value, "MOD Material") <> 0 And InStr(c.Value, "M/") <> 0 Then s = "正常项目/MOD1" ElseIf InStr(c.Value, "CS Material") <> 0 Then s = "CS/SPC" Else s = "其它" End If Cells(y, "A") = s End If Next cEnd Sub。
转载请注明出处育才学习网 » 求和的vba代码怎么写
育才学习网