首页 > 解决方案 > 使用查找、创建行、操作数据

问题描述

我是使用 VBA 的新手,并且在观看 yt vids 和在线查看 pdf 等方面花了很多时间,但没有取得任何进展。我已经包含了两个带有通用数据的屏幕剪辑以帮助理解。我的问题是:

  1. 查找在“计划”选项卡中打印“安装”的实例
  2. 向左移动一个单元格并取相应安装的名称
  3. 在“电缆详细信息”选项卡中搜索相应的名称
  4. 找出对应名称的电缆有多少
  5. 在“计划”选项卡中的相应名称下方创建所需的行数。前任。电缆 D 需要在 Schedule 选项卡中插入 4 个新行。
  6. 将“电缆详细信息”选项卡中的数据 2、3、4 插入到“计划”选项卡中相应电缆的新单元格中。
  7. 继续下一个“安装”实例并完成相同的过程
  8. 该程序还需要缓解将遇到“安装”但“电缆详细信息”选项卡中没有数据的情况。

我曾尝试使用记录宏,但我认为使用它无法执行我需要的操作,它太复杂了。我以前学过一些 MATLAB,所以有一些基本的编程技能,但对 VBA 不是很热。

任何我觉得方便的帮助或指南链接将不胜感激。

干杯

计划选项卡

在此处输入图像描述

电缆详细选项卡

在此处输入图像描述

标签: excelvba

解决方案


你可以试试下面的代码。它应该涵盖你所有的子弹,但是我不是 100% 确定你想要达到什么 regaging 8th。

Sub Cables()
    Dim wsSchedule As Worksheet
    Dim wsCabDet As Worksheet
    Set wsSchedule = ThisWorkbook.Worksheets("Schedule")
    Set wsCabDet = ThisWorkbook.Worksheets("Cables Detailed")
    Dim RowCount As Integer
    RowCount = wsSchedule.Range("a1048576").End(xlUp).Row
    Dim i As Integer
    Dim rCables As Range
    Dim rCable As Range
    Set rCables = wsCabDet.Range("a2", wsCabDet.Range("a1048576").End(xlUp))
    Dim CableFound As Boolean
    For i = RowCount To 2 Step -1
        If wsSchedule.Range("b" & i) = "Install" Then
            CableFound = False
            For Each rCable In rCables
                If rCable = wsSchedule.Range("a" & i) Then
                    With wsSchedule.Range("b" & i + 1)
                        .EntireRow.Insert
                        .Offset(-1, -1).Value = rCable
                        .Offset(-1, 1).Value = rCable.Offset(0, 1)
                        .Offset(-1, 2).Value = rCable.Offset(0, 2)
                        .Offset(-1, 3).Value = rCable.Offset(0, 3)
                    End With
                    CableFound = True
                End If
            Next rCable
            If Not CableFound Then
                With wsSchedule.Range("b" & i)
                    .Offset(0, 1).Value = "No cable found"
                    .Offset(0, 2).Value = "No cable found"
                    .Offset(0, 3).Value = "No cable found"
                End With
            End If
        End If
    Next i
End Sub

推荐阅读