VBA

Rows(1).Insert '在第1行前插入1行

Private Sub Worksheet_Activate()
    myrow = ActiveWorkbook.ActiveSheet.UsedRange.Rows.Count
    Dim idx As Integer
    Dim j As Integer
    idx = 4
    For j = 3 To myrow
        Debug.Print Worksheets("sheet2").Cells(j, 1).Value
        idx = processValue(idx, Worksheets("sheet2").Cells(j, 1))
    Next j
End Sub

Function processValue(idx As Integer, val As Range)
    Dim i As Integer
    Dim b As Boolean
    For i = 1 To idx
        b = Worksheets("sheet1").Cells(i, 1).Value = val.Value
        If b Then
            Worksheets("sheet1").Cells(i, 2).Value = Worksheets("sheet1").Cells(i, 2).Value + 1
            Exit For
        End If
    Next i
    If b Then
        processValue = idx
    Else
        Worksheets("sheet1").Cells(idx, 1).Value = val.Value
        Worksheets("sheet1").Cells(idx, 2).Value = 1
        processValue = idx + 1
    End If
End Function

Private Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    Dim buffer As New Collection
    Dim index As Long
    Dim first As Long
    Dim last As Long
    Dim counter As Long
    Dim current As Range
    Dim ws As Worksheet
   
    first = 4
    Set ws = Application.Worksheets("基础数据表")
    last = ws.UsedRange.Rows.Count
       
    For counter = first To last
        Set current = ws.Range("D" & counter)
        Call analyze(buffer, current, counter)
    Next counter
    Application.ScreenUpdating = True
End Sub
Function analyze(ByRef buffer As Collection, ByRef cluster As Range, rownum As Long)
    Dim exist As Boolean
    Dim rowset As Collection
   
    exist = False
   
    If Not (IsError(cluster.value) Or IsEmpty(cluster.value) Or cluster.value = "") Then
    On Error GoTo nextStep
        Set rowset = buffer.Item(CStr(cluster.value))
        exist = True
nextStep:
    If Not exist Then
        Set rowset = New Collection
        buffer.Add rowset, CStr(cluster.value)
    End If
    rowset.Add rownum
End If
End Function

08-20
### VBA 编程入门 VBA(Visual Basic for Applications)是一种专为 Microsoft Office 应用程序设计的编程语言,尤其适用于 Excel。通过 VBA,用户可以自动化重复性任务、创建自定义函数和宏,甚至开发复杂的应用程序[^3]。对于初学者来说,掌握 VBA 的基本语法是至关重要的第一步。这包括了解关键字与标识符、数据类型与变量、控制结构等基础概念,并学习如何通过条件控制、循环控制以及错误处理来构建灵活和健壮的代码[^2]。 ### 使用技巧 - **自动化办公**:通过编写 VBA 脚本,用户可以自动化处理 Excel 中的数据,减少手动操作,提高工作效率[^3]。 - **数据分析**:VBA 可以帮助用户快速处理和分析大量数据,生成报表和图表,为决策提供支持[^3]。 - **自定义功能开发**:用户可以根据业务需求,开发自定义的 Excel 功能,扩展软件的原有能力[^3]。 - **批量处理**:VBA 可以用于批量处理文件、数据导入导出等任务,特别适合需要处理大量数据的场景[^3]。 - **操作规范**:指南详细介绍了如何规范操作,避免常见错误,帮助用户养成良好的编程习惯[^4]。 - **高效自动化**:VBA 代码可以帮助用户快速实现多个步骤的手工操作,显著提高工作效率。 ### 常见问题 - **如何在 Excel 中手动编写 VBA 代码**:通常,这涉及到打开 VBA 编辑器,插入模块,然后编写代码[^1]。 - **如何在 Excel 中运行 VBA 代码**:可以通过运行按钮或者快捷键 F5 来执行代码[^1]。 - **如何在 Excel 中记录 VBA 代码**:Excel 提供了宏录制器,可以记录用户的操作并转换为 VBA 代码。 - **如何在 Excel 中编辑录制的 VBA 代码**:使用 VBA 编辑器可以对录制的代码进行修改和优化。 - **如何将 VBA 代码分配给 Excel 中的按钮**:可以在 Excel 中插入表单控件,然后将宏指定给该按钮。 ### 示例代码 以下是一个简单的 VBA 示例,演示了如何循环访问一系列单元格并对其进行操作: ```vba Sub LoopThroughCells() Dim i As Integer For i = 1 To 10 Cells(i, 1).Value = "Row " & i Next i End Sub ``` 此代码段展示了如何使用 `For` 循环来遍历从第 1 行到第 10 行的第一列,并设置其值为相应的行号。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值