
Sub 双字典统计()
Dim Rng As Range, Dic As Object, i&, Arr, Brr
Set Dic = CreateObject("ScriptingDictionary")
Arr = [A2:C12]
For i = 1 To UBound(Arr)
If Not DicExists(Arr(i, 1)) Then
Set Dic(Arr(i, 1)) = CreateObject("ScriptingDictionary")
Dic(Arr(i, 1))(Arr(i, 2)) = Arr(i, 3)
Else
Dic(Arr(i, 1))(Arr(i, 2)) = Dic(Arr(i, 1))(Arr(i, 2)) + Arr(i, 3)
End If
Next i
Set Rng = [F1]
Brr = DicKeys
For i = 0 To UBound(Brr)
RngOffset(0, i 2) = Brr(i)
RngOffset(1, i 2)Resize(Dic(Brr(i))Count, 2) = _
ApplicationWorksheetFunctionTranspose(Array(Dic(Brr(i))Keys, Dic(Brr(i))Items))
Set Dic(Brr(i)) = Nothing
Next i
Set Dic = Nothing
End Sub
一定要用VBA么?
for r=2 to 100
if applicationWorksheetFunctionSum(range("M1:X1")offset(r,0))<>0 and applicationWorksheetFunctionSum(range("A1:L1")offset(r,0))>0 then
range("Y1")offset(r,0)=applicationWorksheetFunctionSum(range("A1:L1")offset(r,0))/applicationWorksheetFunctionSum(range("M1:X1")offset(r,0))
endif
next r
=====================================================
好蛋疼啊!
直接用公式多简单:
=IF(AND(SUM(M3:X3)<>0, SUM(A3:L3)>0), SUM(A3:L3)/SUM(M3:X3), "")
建一个窗体,窗体上建一个refedit控件、一个按钮,将下面代码粘贴到按钮的单击事件中:
Private
Sub
CommandButton1_Click()
str1
=
RefEdit1Text
'鼠标选取单元格范围,获取引用字串
myrng
=
Right(str1,
Len(str1)
-
InStr(str1,
"!"))
Unload
Me
MsgBox
"选定范围"
&
Right(str1,
Len(str1)
-
InStr(str1,
"!"))
&
"数据总和为:
"
&
ApplicationWorksheetFunctionSum(Range(myrng))
End
Sub
在表格中输入一些数字,此示例,通过refedit控件用鼠标在表格中选取范围,然后将选取范围的单元格引用字串传递给sum函数进行加总该范围的数据。
不知道你是不是要放在工作表的change事件来处理这件事所谓工作表的change事件就是当工作表的单元格内容发生变化后触发这个事件并自动执行相关代码
这是我按你的要求写的放在工作表change事件里的代码 因为不知道回文的位置 所以我假定回文是在A列yes no 输出在B列同行的单元格
Private Sub Worksheet_Change(ByVal Target As Range)
If TargetColumn = 1 Then
Dim FXstr
FXstr = StrReverse(TargetValue)
If FXstr = TargetValue Then
TargetOffset(0, 1) = "YES!"
Else
TargetOffset(0, 1) = "NO!"
End If
End If
End Sub
如果要用宏手动执行用下面的代码 ,假设回文在A1单元格
Sub 检查回文()
Dim FXstr
FXstr = StrReverse(Range("A1")Value)
If FXstr = Range("A1")Value Then
Range("A1")Offset(0, 1) = "YES!"
Else
Range("A1")Offset(0, 1) = "NO!"
End If
End Sub
以下是一个简单的VBA代码示例,可以将“表1” H5:V23区域的数值复制到“表2” AA5单元格,仅保留数值而不复制公式。您可以在VBA编辑器中打开要处理的工作簿,选择“插入” -> “模块”,然后将下面的代码复制到模块中,保存并运行即可。
Sub CopyValues()
Dim sourceRange As Range
Dim destRange As Range
' 指定源数据和目标数据的区域
Set sourceRange = Worksheets("表1")Range("H5:V23")
Set destRange = Worksheets("表2")Range("AA5")
' 复制数据(仅包括数值,不包括公式)
sourceRangeCopy
destRangePasteSpecial xlPasteValues
' 清除剪贴板数据
ApplicationCutCopyMode = False
End Sub
您需要根据实际情况修改代码中的工作表名称和区域地址,确保源数据和目标数据的位置准确无误。如果您需要将代码中的公式也一并复制到目标单元格中,可以将“xlPasteValues”修改为“xlPasteAll”即可。
sub deleteRow()
for i = 200 to 1 step -1
cmpValue = range("A" & i)value
if cmpValue = "27" or cmpValue = "35" or cmpValue = "69" or cmpValue = "77" then
row(i)delete
end if
next
end sub
下面是我当初在Excel中学习的方法: 1 点菜单的工具,宏,录制宏,做一些简单的动作,如在A1输入1,在B1输入 =A12,将B1的字体颜色设为红色,停止录制。同时按Alt和F11进入VB界面,在左上窗口找到模块一,双击,右边窗口出来了你录制的宏的代码。懂英语最好了,一句一句就象白话文:) 2 裘伯君说:编程只需掌握判断语句。VBA中典型的判断语句如下: if 某条件 then 一些语句 else 又一些语句 end if 简单的if语句可以是 if 某条件 then 一些语句 end if 更简单的判断语句为 if 某条件 then 一语句 举例,在你录制的代码处粘贴以下宏: Sub Test() If 5 > 2 then Msgbox "I Love U!" End Sub 按F5运行此宏,你会看到一消息框,“I Love U!" 所有的 *** 作无非是一大堆逻辑判断,即If语句中再套If语句。 3 除了判断语句,还应掌握循环语句,应为电脑擅长的就是重复工作:) 粘贴以下代码在有你录制宏的地方: Sub Test2() for i = 1 to 10 cells(i,1)=i cells(i,1)fontcolorindex = i next i end sub 把宏的窗口变小些,让你能看到Excle表格的A列,在宏的窗口中重复按F8,看Excel里的变化。 For to 一些语句 Next 是经典的循环语句,刚才那个代码的意思是从1重复到10,其中Cells(i,1)是工作表中的第i行第1列,fontcolorindex你录制的第一个宏里有的,就是设字体颜色。 多来QQ问问中搜搜,比如直接搜VBA,或者点我的名字看有哪些VBA的问题:)
以上就是关于excel怎么用vba编写一个这样的程序,谢谢全部的内容,包括:excel怎么用vba编写一个这样的程序,谢谢、excel表用VBA编写程序、Excel VBA中RefEdit的具体用法及实例等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)