- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
VBA 技能较弱的网站新手。希望我能在几天来一直在努力解决的问题上找到一些帮助。我发现了许多相似的例子,似乎无法将它们结合在一起。我正在使用 Excel 2007。我有一个“Summary_Reports”WB,以及由员工命名的其他几个工作簿(例如“Jim.xls”、“bob.xls”等)。每个员工工作簿都有一个命名范围“caps”,来自工作表“Tasks”。每个员工 wb 中的这个命名范围的宽度(列数)相同,但高度(行数)可能不同,并且某些行可能为空。尝试在“Summary_Reports”wb 中设置一个宏,该宏将打开每个员工 wb,复制命名范围“caps”,并将第一列中包含数据的该范围的行插入/粘贴到“报告”表在“Summary_Reports”wb 中。我认为最简单的粘贴方法就是在顶部选择一个单元格并始终将这些行插入那里,这样每个员工就会从同一个位置开始插入到前一个员工的上方。这样就不会计算或寻找工作表上最后填充的行。起初我尝试打开“Jim.xls”并直接从工作簿中复制命名范围,但收效甚微,语法也遇到了很多麻烦。所以我最终得到了下面的代码,它将员工表拉到“Summery_Reports”中,然后从自身而不是另一个 wb 复制命名范围。最后可能会删除这些工作表。
我在下面开始的有点工作,但我知道的数据验证是不正确的。如果我错了,请纠正我,但它只是检查“大写”的左上角单元格;如果有内容,则粘贴所有“大写字母”,如果该单个单元格为空,则不粘贴任何内容。如何更正验证以检查每一行的第一列,以及如何让它只给我带有数据的行?
另外,我知道有一种更好的方法可以直接从每个员工 wb 获取“caps”数据,而无需先导入工作表。如果这可以轻松完成,我会对这方面的任何建议非常感兴趣。
如果您愿意帮助我,请尽可能地简化它,因为我真的很想知道代码的作用,而不仅仅是复制和粘贴。先感谢您。
Sub Import_Sheets()
Application.Workbooks.Open ("jim.xls")
Workbooks("jim.xls").Activate
Sheets("Tasks").Copy After:=Workbooks("Summary_Report.xlsm").Sheets("Report")
Application.Workbooks("Jim.xls").Close
'Go to newly copied sheet and name it.
ActiveSheet.Name = "jim"
'Copy the "caps" named range.
With Range("Caps")
If .Cells(1, 1).Value = "" Then
Else
Range("Caps").Select
Selection.Copy
Sheets("Report").Select
Range("B2").Select
Selection.Insert Shift:=xlDown
End If
End With
End Sub
最佳答案
注释代码:
Sub Import_Sheets()
'Declare variables
Dim wsDest As Worksheet 'This is the sheet that data will be pasted to
Dim rngCaps As Range 'This is used to determine if there is a named range "Caps"
Dim rngFound As Range 'This is used to loop through the first column in the named range "Caps"
Dim rngSearch As Range 'This is used to determine where to search
Dim rngCopy As Range 'This is used to store the rows with data that will be copied
Dim strFirst As String 'This is used to store the first cell address to prevent an infinite loop
Dim i As Long 'This is used to loop through the selected workbooks
'Create an "Open File" dialogue for the user to choose which files to import
With Application.FileDialog(msoFileDialogFilePicker)
.Filters.Clear 'Clear existing filters (if any)
.Filters.Add "Excel Files", "*.xls*" 'Filter for Excel files
.AllowMultiSelect = True 'Allow user to select multiple files at a time with Shift or Ctrl
If .Show = False Then Exit Sub 'Pressed cancel, exit macro
'The destination is this workbook, sheet 'Report'
Set wsDest = ActiveWorkbook.Sheets("Report")
'Turn off screenupdating. This prevents "Screen Flickering" and allows the code to run faster
Application.ScreenUpdating = False
'Begin loop through selected files
For i = 1 To .SelectedItems.Count
'Open a selected file
With Workbooks.Open(.SelectedItems(i))
'Attempt to find a sheet named 'TimeEntry' with a named range "Caps"
On Error Resume Next
Set rngCaps = .Sheets("TimeEntry").Range("Caps")
On Error GoTo 0 'Remove the On Error Resume Next condition
'Was it able to set rngCaps successfully?
If Not rngCaps Is Nothing Then
'Yes, proceed to find rows with data
'Define rngSearch which will be used to find rows with data
Set rngSearch = Intersect(rngCaps, rngCaps.Cells(1).MergeArea.EntireColumn)
'Use a find loop to only get rows with data
'We can do this by utilizing the wildcard *
'The .Resize(, 1) will make sure we are only looking in the first column of rngCaps
Set rngFound = rngSearch.Find("*", rngSearch.Cells(rngSearch.Cells.Count), xlValues, xlWhole)
'Was there a cell found with data?
If Not rngFound Is Nothing Then
'Yes, record this first cell's address to prevent infinite loop
strFirst = rngFound.Address
'Also start storing the rows where data was found
Set rngCopy = rngFound
'Begin the find loop
Do
'Add found rows to the rngCopy variable
Set rngCopy = Union(rngCopy, rngFound)
'Advance loop to the next cell that contains data
Set rngFound = rngSearch.Find("*", rngFound, xlValues, xlWhole)
'Exit the loop when we are back to the first cell
Loop While rngFound.Address <> strFirst
'Copy the rows with data and paste them into the next available row in the destination worksheet
Intersect(rngCaps, rngCopy.EntireRow).Copy wsDest.Cells(wsDest.Rows.Count, "B").End(xlUp).Offset(1)
'Clear rngFound and rngCopy to get ready for next workbook
Set rngFound = Nothing
Set rngCopy = Nothing
End If
'Clear rngCaps to get ready for next workbook
Set rngCaps = Nothing
End If
'Close this opened workbook and don't save changes
.Close False
End With
'Advance to the next workbook that was selected
Next i
'Re-enable screen updating
Application.ScreenUpdating = True
'Object variable cleanup
Set wsDest = Nothing
End With
End Sub
关于Excel VBA 从另一个名为范围的工作簿中提取非空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18388000/
我想用 python 读取串行端口,并用 readline 打印结果,但我在所有结果行之间得到空行。你能告诉我如何删除所有空行吗? 我的代码: #!/usr/bin/python import ser
我正在编写一个程序,该程序存储用户输入的数字,但如果输入空白则退出。 我尝试将其设为字符数组并检查长度。如果长度大于0,则表示有输入,因此它将存储输入。如果长度为0,则表示没有输入,因此退出循环。 d
这个项目要求我通过取出所有注释、空行、额外的空格和括号中的信息来读取处理中的文件,然后将其打印到output.txt中。我在处理数据和删除所有注释、空行、额外的空格和括号中的信息时遇到了麻烦。 这是我
有没有办法从服务器响应中删除空行?我已经尝试过: trimSpaces true 和 这没有正确解决问题,因为在 init param 方法中它甚至删除了
你好, if('\t' == input [0] ||'\v' == input [0] ||'\r' == input [0] ||'\n' == input [0] || '\0' == in
我不知道如何用语言来解释这个场景。所以我在写例子: 我有一个名为 tblType 的表: type_id | type_name --------------------- 1 |
代码如下: <?php /* *读取文件内容至字符串中,同时去除换行、行首行尾空格。 */ header("Content-type: text/html; chars
我正在将行与两个文本文件的行进行比较,ref.txt (引用)和 log.txt .但是我想忽略任一文件中的任意数量的空行;我怎样才能做到这一点? ref.txt one two three end
关于删除jtable中未使用的行的问题我正在使用DefualtTableModel我的表已经有一些数据并且当我更新它时将一些列留空以稍后更新主题,以便它们是空列..我想在保存数据之前用按钮删除主题..
我看到列表,它有适量的行(根据 QStringList 中的元素数量),但行是空的。 我做错了什么? 在 C++ 中我的代码是: QStringList s; s.append("1"); s.app
我怎样才能从这些行中隐藏 UITableView 的行,什么是不使用的。例如,看截图: 我可以只显示 4 行并隐藏其他未使用的行吗?所以,我只显示 4 行,然后是白屏,而不是现在的行 最佳答案 喜欢将
对于我的 bash/html 中的 CGI,我有这个脚本(只是 awk 脚本,其余代码只是一个简单的 hmtl 代码): for fn in /var/www/cgi-bin/LPAR_MAP/*;
一直在尝试使用输出 html 方法转换 xml 文档,以便使用 xsl 样式表(使用 CSS)在浏览器中显示。想显示以下代码 Source A Co
我想在我的 LOG 语句之后添加一个空行,以使我的日志更加分隔和可读。 我该怎么做? 当前声明: LOGGER.info("Person's name is {} .", person.getNa
我正在执行以下假脱机语句: SET VERIFY OFF SET FEEDBACK OFF SET HEADING OFF SET TRIMSPOOL ON SET TERM OFF SPOOL &p
包含五个相关字段的表格; ID (Autoincrement,unique, etc) ID_customer - ties in each row to another table with cus
我有这样的风格: #cytoscape-container { width: 100%; height: 100%; margin: 0 aut
while((fscanf(datafile, " %127[^;] %[^\n]", name, movie)) == 2) { printf("%s\n", movi
我有这个two commands获取 SID 用户帐户 wmic useraccount where name='%username%' get sid | findstr /b /C:"S-1" >
我使用这段代码: window.removeDuplicateLines = function() { "use strict"; var bodyText = $('#text-area')
我是一名优秀的程序员,十分优秀!