excel - 目标列更改为特定文本时复制部分行
问题描述
概括:
当特定文本输入到 Physician_Orders 的 I 列时,我在同一个工作簿中有两张表,我需要在从 Physician_Orders 到 DME_Orders 之间移动数据。
一些细节:
- 每张纸都有 A:I 列
- 当 Physician_Orders Column I 更改为文本“Rx Received”时,我需要将 A:C 列中的数据复制到 DME_Orders 上 A:C 列的第一个空行中,而保持 Physician Orders 上的数据完整。
如果这种情况以两种方式之一发生,我会没事的:
- 在变化发生时立即发生
- 仅在按下按钮时发生
我已经尝试了我在 SO 上找到的大约五种不同的脚本,但我都遇到了错误。我目前的混乱看起来像这样,这给了我错误“需要对象”。
Sub RxRCVD()
Dim LastRow As Long
Dim destRng As Range
Dim KeyCells As Range
Set KeyCells = Range("I2:I500")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
If Target.Value = "Rx Received" Then
Application.ScreenUpdating = False
With Sheets("DME_Orders")
Set destRng = .Range("A" & .Cells(.Rows.Count, "A").End(xlUp).Row + 1)
Sheets("Physician_Orders").Range("A:C" & Target.Address.Row).Copy Destination:=destRng
.Columns("A:C").AutoFit
End With
Application.ScreenUpdating = True
End If
End If
End Sub
解决方案
- 使用
Worksheet_Change
事件自动触发你的宏 Target
您可以使用Offset
和重新调整要复制的范围Resize
- 关闭事件以避免无限循环和您的 excel 实例崩溃。看起来这不会触发无限循环,但这是最佳实践
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DME As Worksheet: Set DME = ThisWorkbook.Sheets("DME_Orders")
Dim lr As Long
If Not Intersect(Range("I2:I500"), Target) Is Nothing Then
If Target.Value = "Rx Received" Then
Application.EnableEvents = False
Application.ScreenUpdating = False
lr = DME.Range("A" & DME.Rows.Count).End(xlUp).Offset(1).Row
Target.Offset(, -8).Resize(1, 3).Copy
DME.Range("A" & lr).PasteSpecial xlPasteValues
DME.Columns("A:C").AutoFit
Application.EnableEvents = True
Application.ScreenUpdating = True
End If
End If
End Sub
推荐阅读
- angularjs - 如何从不同的页面角度检索数据
- ios - 是否有可能,以及如何在使用 frida gadget 重新打包 iOS 应用程序时将键值对添加到新的权利文件中?
- c# - 日期不接受空值
- r - 复制 R 食谱中的示例时 scale_colour_discrete 不起作用
- php - VS 代码调试器 - Felix Becker - 调试器没有遇到任何问题
- reactjs - 当我在 CMD 窗口中编写 npx create-react-app-my-app 时出现错误。我已经安装了 Node.js:C:\Users\dev>node --version v15.4.0****
- ionic-framework - 如何在 android studio 模拟器上运行基于 ionic 开发的应用程序
- lua - 罗技 G-Hub 的最新更新中缺少数学库
- javascript - 无法使用vue和moment将参数传递给茉莉花中的按钮方法
- reactjs - 在 React 中使用 this.setState 时遇到“错误:Material-UI:capitalize(string) 需要一个字符串参数”