excel - 使用查找、创建行、操作数据
问题描述
我是使用 VBA 的新手,并且在观看 yt vids 和在线查看 pdf 等方面花了很多时间,但没有取得任何进展。我已经包含了两个带有通用数据的屏幕剪辑以帮助理解。我的问题是:
- 查找在“计划”选项卡中打印“安装”的实例
- 向左移动一个单元格并取相应安装的名称
- 在“电缆详细信息”选项卡中搜索相应的名称
- 找出对应名称的电缆有多少
- 在“计划”选项卡中的相应名称下方创建所需的行数。前任。电缆 D 需要在 Schedule 选项卡中插入 4 个新行。
- 将“电缆详细信息”选项卡中的数据 2、3、4 插入到“计划”选项卡中相应电缆的新单元格中。
- 继续下一个“安装”实例并完成相同的过程
- 该程序还需要缓解将遇到“安装”但“电缆详细信息”选项卡中没有数据的情况。
我曾尝试使用记录宏,但我认为使用它无法执行我需要的操作,它太复杂了。我以前学过一些 MATLAB,所以有一些基本的编程技能,但对 VBA 不是很热。
任何我觉得方便的帮助或指南链接将不胜感激。
干杯
计划选项卡
电缆详细选项卡
解决方案
你可以试试下面的代码。它应该涵盖你所有的子弹,但是我不是 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
推荐阅读
- c# - 从字符串中删除日期和时间戳
- c# - 运行WebApi项目的OWIN SelfHost项目不调用Application_Start方法
- handlebars.net - 如何在 HandleBars.Net 中保留表达式以供以后评估?
- sas - 在 SAS 中计算整个文件的 md5 哈希,因为每个记录都有一个 md5 哈希
- docker - 如何使我的 dockerized 微服务可供公众使用
- jquery - 产品卡片标题每行高度相同问题
- c# - 是否可以在属性定义中同时使用“新”和“覆盖”?
- triggers - 使用自定义按钮实现潜在客户转换
- java - 如何从 Android 中的另一个类调用非静态变量?
- r - 按组求和总距离