感悟网 导航

请高手帮忙在EXCEL中用VBA计算数字的个数。 EXCEL中怎样用VBA计算单元格中数字的和值?

作者&投稿:钞寇 (若有异议请与网页底部的电邮联系)
EXCEL中请用VBA统计数字个数并提取数。~

做好了,继续加分啊



'从B列第一行开始逐个统计,结果显示在C列
Sub tj()
For r = 1 To Range("B65536").End(xlUp).Row
Dim a
a = Cells(r, 2)
Dim n
n = Len(a)

Dim x As Integer
For i = 1 To n
x = x + Mid(a, i, 1)
Next
Cells(r, 3) = x
x = 0
Next
End Sub

样本文件见附件(两种方案,一种为自定义函数,一种是宏代码)

自定义函数用法如下:

代码如下:

Function 数字(ByVal rg As Range) As Integer
Dim d As Object
Set d = CreateObject("scripting.dictionary")
For Each c In rg
    If Len(c) > 0 And VBA.IsNumeric(c) Then
        d(c.Value) = ""
    End If
Next
数字 = d.Count
End Function




这个首先按ALT+F11可以进入VBA开发界面
然后你可以设置一个实时更新程序,当B:G发生改变时自动执行
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim j As Integer
On Error GoTo ERRORHANDLER
If Target.Column >= 2 And Target.Column <= 7 Then '如果第二列到第七列的值发生变化的话(B到G单元格)
i = 1
j = 0
Do While Me.Cells(i, 2).Value <> "" '当B列不为空时就一直执行
If Me.Cells(i, 2).Value >= 0 And Me.Cells(i, 2).Value <= 9 Then
j = j + 1
Else
End If
If Me.Cells(i, 3).Value >= 0 And Me.Cells(i, 3).Value <= 9 And Me.Cells(i, 3).Value <> Me.Cells(i, 2).Value Then
j = j + 1
End If
If Me.Cells(i, 4).Value >= 0 And Me.Cells(i, 4).Value <= 9 And Me.Cells(i, 4).Value <> Me.Cells(i, 2).Value And Me.Cells(i, 4).Value <> Me.Cells(i, 3).Value Then
j = j + 1
End If
If Me.Cells(i, 5).Value >= 0 And Me.Cells(i, 5).Value <= 9 And Me.Cells(i, 5).Value <> Me.Cells(i, 2).Value And Me.Cells(i, 5).Value <> Me.Cells(i, 3).Value And Me.Cells(i, 5).Value <> Me.Cells(i, 4).Value Then
j = j + 1
End If
If Me.Cells(i, 6).Value >= 0 And Me.Cells(i, 6).Value <= 9 And Me.Cells(i, 6).Value <> Me.Cells(i, 2).Value And Me.Cells(i, 6).Value <> Me.Cells(i, 3).Value And Me.Cells(i, 6).Value <> Me.Cells(i, 4).Value And Me.Cells(i, 6).Value <> Me.Cells(i, 5).Value Then
j = j + 1
End If
If Me.Cells(i, 7).Value >= 0 And Me.Cells(i, 7).Value <= 9 And Me.Cells(i, 7).Value <> Me.Cells(i, 2).Value And Me.Cells(i, 7).Value <> Me.Cells(i, 3).Value And Me.Cells(i, 7).Value <> Me.Cells(i, 4).Value And Me.Cells(i, 7).Value <> Me.Cells(i, 5).Value And Me.Cells(i, 7).Value <> Me.Cells(i, 6).Value Then
j = j + 1
End If
Me.Cells(i, 8).Value = j '将最后计算的个数赋值给H列
Loop
'最后将计算出的值赋给第二行第一列即B1单元格
End If
ERRORHANDLER:
End Sub

Sub 统计不重复个数()
Dim d As Object
Set d = CreateObject("scripting.dictionary")
For i = 1 To [b65536].End(3).Row
    For j = 2 To 7

      d(Cells(i, j).Value) = ""

    Next j
      Cells(i, 8) = d.Count
      d.RemoveAll
    
Next i

End Sub


《excel vba 高手来帮忙?》
答:如果是直接把A的拷贝到B的,可以用COPY。有人已经给出方法了。如果是把A列单元格中的数据拷贝到B列,每隔N复制一个,可以用 FOR EACH …… NEXT 语句做个拷贝,至于目的单元格,可以用偏移,或者用CELL函数,行的位置可以按倍数来处理。如果是把A列的的数据,显示到B列, 在单元格内换行的话...

《烦请高手帮忙解决Excel中VBA的SolverReset的代码问题,谢谢啦~》
答:使用函数之前,必须建立对规划求解加载宏的引用。让VBA模块处于活动状态,单击“工具”菜单中的“引用”,然后选中“可使用的引用”列表框中的“Solver.xla”复选框。如果“Solver.xla”未出现在“可使用的引用”列表框中,单击“浏览”并打开“\Office\Library”子文件夹中的“Solver.xla”。引用后,这...

《EXCEL VBA FUNCTION自定义函数,高分求助,高手来帮忙!》
答:4)"), "00:00")End Function >> Q4★aTime Public Function aTime(ByVal Target As Range) As String aTime = Format$(Evaluate("=MID(" & Target.Address(False, True) & ",39,4)"), "00:00")End Function PS:使用方法和 Excel 自带函数一样,输入完一个单元格后下拉即可!

《请高手帮忙编写EXCEL VBA程序,跨工作簿查询并返回数据》
答:Private Const DirPath$ = "C:\" '指向查找的路径 Sub aa()Dim Filename Dim i& Dim Wb As Workbook, Rng As Range Application.ScreenUpdating = False Application.DisplayAlerts = False On Error Resume Next With Worksheets("总表")For i = 1 To .[B65536].End(3).Row If Len(....

《求excel 高手 用VBA/宏 实现将sheet1筛选后的内容粘贴至sheet2_百度...》
答:程序如下,希望你喜欢:Sub Run_Sort_Copy()On Error GoTo ErrExit Dim strSheetName_1 As String, strSheetName_2 As String Dim iClass As Long, iMaxRow As Long, iRow As Long, iNewRow As Long Application.ScreenUpdating = False strSheetName_1 = "Sheet1" '此处可修改表1名称 str...

《使用Excel VBA 实现复制 粘贴 和保存,并自动运行VBA》
答:代码如下,注意代码的位置(详见截图)Private Sub Worksheet_Activate() Application.OnKey "~", "Copy4To500" 'Application.OnKey "{ENTER}", "Copy4To500" '小键盘回车键End SubPrivate Sub Worksheet_Deactivate() Application.OnKey "~" 'Application.OnKey "{ENTER}"End SubSub ...

《请问如何利用EXCEL VBA 让所选区域底色变色》
答:希望能帮到你。该代码在你进行选择单元格时自动执行,包括你修改过后,也会自动填充相应背景色及边框。如有需要修改,继续追问Option ExplicitPublic i As IntegerPublic j As IntegerPublic borders_colors As IntegerPublic backgroup_colors As IntegerPrivate Sub Worksheet_SelectionChange(ByVal Target As...

《excel中假设有6列N行,请高手帮忙设计VBA程序,进行排序,排序时以第一...》
答:类似这样的问题,你可以录制一个宏,然后查看其代码即可:Sub Macro1()Range("A1:N6").Select Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo End Sub

《在Excel如何用VBA做统计汇总》
答:Sub 查找()Dim arr, dic As Object, i%, RangA As Range Set RangA = Range("g4", "i100")arr = RangA Set dic = CreateObject("Scripting.Dictionary")For i = 1 To UBound(arr)If dic.exists(arr(i, 2)) Then dic(arr(i, 2)) = dic.Item(arr(i, 2)) & "、" & arr(i...

《如何用VBA代码表示EXCEL表中C列的数据等于A列数据减B列数据,请高手帮忙...》
答:range("C1")=range("A1")-range("B1")cells(1,3)=cells(1,1)-cells(1,2)

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网