excel - Excel VBA - 在一张纸上找到并粘贴到另一个向下移动的目标单元格上的例程
问题描述
非常感谢您对此的任何帮助!
我在 11 个 Excel 表上有 3 列,需要复制到唯一的目标表。
十一张表指的是月份,我需要在新工作簿上找到指该月份的一行,以便粘贴,向下移动单元格,然后搜索下个月并执行相同操作,直到复制所有 11 个月。
是)我有的:
子 PopulateFileTOupload()
'变量
Dim strFileToSave As String
Dim wbSource As Workbook
Dim wsSource As Worksheet
Dim wbTarget As Workbook
Dim wsTarget As Worksheet
Dim rngToCopy1 As Range, rngToCopy2 As Range, rngToCopy3 As Range
Dim dt As String, wbNam As String, wbDir As String
Dim FoundCell As Range, FirstAddr As String, fnd As String, i As Long
' ================ 来源================
Set wbSource = Workbooks.Open("C:\Users\MLOURENC\Documents\0041_PRORATA_ANNUAL_CONTRACTS_UPLOAD.xls")
Set wsSource = wbSource.Worksheets("Month1")
' ================ COPY & PASTE ================
' source range1
Set rngToCopy1 = wsSource.Range("E1", wsSource.Range("E1").End(xlDown))
Set rngToCopy2 = wsSource.Range("N1", wsSource.Range("N1").End(xlDown))
Set rngToCopy3 = wsSource.Range("P1", wsSource.Range("P1").End(xlDown))
Set wbTarget = Workbooks.Open("C:\Users\MLOURENC\Desktop\UP_FRONT S&D\0041_PT\2.Anual-Template\0041_PRORATA ANNUAL CONTRACTS_UPLOAD_TEMPLATE.xls")
' Paste range1
' DON 't know....
' ================ SAVE ================
wbNam = "0041_PRORATA_ANNUAL_CONTRACTS_UPLOAD_READY_"
dt = Format(CStr(Now), "dd_mm_yyyy_hh_mm")
wbTarget.SaveAs Filename:=wbNam & dt
' ================ CLOSE ================'
Application.DisplayAlerts = False
wbTarget.Close
Application.DisplayAlerts = True
结束子
解决方案
您需要布局有关您的目标书的更多信息,以便指出您可以使用什么来标识要将数据复制到的行,但是...
假设您的目标工作簿中的数据格式如下,如果我对您的问题的理解是正确的,所有这些都在一张纸上:
January
Data
Data
Data
Data
February
Data
Data
Data
Data
ETC ETC
Data
Data
Data
Data
基本步骤是:
确定要添加数据的行号
Dim monthRow As Long
monthRow = wbTarget.Sheets(1).Range("A:A").Find("January:", LookIn:=xlValues).Row
检查原始数据中的行数
Dim janRows As Long
janRows = rngToCopy1.rows.count
在您的目标书中插入那么多的空闲行
wbTarget.Sheets(1).Rows(monthRow + 1 & ":" & monthRow + janRows).EntireRow.Insert
跨平台传输数据
wbTarget.Sheets(1).Range("B" & monthRow + 1 & ":B" & monthRow + janRows) = rngToCopy1
有多种方法可以做到这一点(不止一种给猫剥皮的方法),但我认为这是最简单的。
我希望这会有所帮助,如果没有,我会很乐意提供进一步的帮助。
推荐阅读
- node.js - 如何结束此错误: UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
- python - 为什么非root python安装可以跨整个集群工作?
- sonarqube - 为什么我对 SonarQube 中的新代码的覆盖率为 0%?
- python-3.x - 从 div 标签内的 div 标签中抓取信息
- vue.js - 使用 Vuex 4 和 Vue 3 组合 API 从调度的操作中访问数据
- c# - Oracle.ManagedDataAccess.Client.OracleException (0x80004005):连接请求超时
- android - Android:如何使用 Android 计费 4.0.0 恢复以前购买的
- qt - 嵌入式 Linux 书写字体
- amazon-web-services - AWS (Route 53) / Tomcat 8 webapp 重定向
- amazon-s3 - 如何使用 rclone 从 S3 下载数据