已知AL8-EG8是固定点位名称,B列是原始数据区域,C列和D列为原始数据点位对应的数值区域,:BEGIN字符为数据表头,:END字符为数据结尾,AK9-AK40为每组原始数据对应的顺序,例如: BEGIN 计算器 SPC B: 数值 :END 为第一组原始数据 BEGIN 计算器 SPC B: 数值 :END 为第二组原始数据 我需要在AL9-EG40单元格中求出AL8-EG8单元格点位名称在B列对应的点位名称然后在C列中求出B列点位对应的数值,帮我写成宏程序,且在B2单元格更新时运行
时间: 2023-06-18 16:06:13 浏览: 67
以下是一个基本的宏程序,它可以在B2单元格更新时运行,按照您的要求在AL9-EG40单元格中计算出数据:
```
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim ws As Worksheet
Set ws = ActiveSheet
If Target.Address = "$B$2" Then
For i = 9 To 40
For j = 2 To 7
If ws.Cells(i, j).Value = ws.Cells(8, 5).Value Then
For k = 3 To 4
ws.Cells(i, j + k - 2).Value = ws.Cells(Application.Match(ws.Cells(i, 1).Value, ws.Range("AK9:AK40"), 0) + 8, k).Value
Next k
End If
Next j
Next i
End If
End Sub
```
该程序使用了 `Worksheet_Change` 事件,当B2单元格发生变化时,它将循环遍历AL9-EG40单元格范围,查找与AL8-EG8单元格相对应的B列点位名称,并在C列和D列中获取对应的数值填充到AL9-EG40单元格中。
请注意,这个程序假设您的数据表格的结构是固定的,即:AL8-EG8单元格是固定的点位名称,B列是原始数据区域,C列和D列为原始数据点位对应的数值区域,:BEGIN字符为数据表头,:END字符为数据结尾,AK9-AK40为每组原始数据对应的顺序。
如果您的数据表格结构不同,可能需要对程序进行适当的修改。
阅读全文