我工作的同事似乎花了很多时间从电子表格中获取数据,然后计算出百分比,然后将其粘贴到报告中。
我很确定有一种更快捷的方式,但由于对Ecxel的经验很少,因此很难证明这一点。
我已经创建了一个宏来删除字段中的任何不必要的文本,所以它现在只是一个值。
我的问题是,从中获取数据总是有不同数量的字段。
我需要值的字段是直接位于以&#34开头的任何字段的字段; Unique Pulls"一旦我能解决这个问题,其余的应该是非常直接的。
答案 0 :(得分:0)
我刚刚开始使用VBA,所以不是百分百肯定,但也许你可以使用Find / FindNext循环?
这可能有助于使用Find / FindNext(例如'第3节'中的示例):http://www.siddharthrout.com/2011/07/14/find-and-findnext-in-excel-vba/
希望有助于您入门!
编辑:
也许您已经从上面的评论中解决了这个问题,但是如果您在这里仍然遇到添加值的问题,那么我可以使用的是一个潜在的解决方案:@Alex的所有功劳K.上面的UCase$(cell.Value)
建议!
Dim LastRow As Integer, LastCol As Integer
Dim iTotal As Integer, n As Integer, i As Integer
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
End With
For n = 2 To LastRow ' For each row with data...
iTotal = 0 ' Resets total count for each row.
For i = 1 To LastCol ' Find each column starting with 'Unique Pulls'.
If UCase$(ActiveSheet.Cells(1, i).Value) Like "UNIQUE PULLS*" Then
iTotal = iTotal + ActiveSheet.Cells(n, i).Value
' For each of these columns, take value and add to total sum
End If
Next i ' Move onto next column
ActiveSheet.Cells(n, 5).Value = iTotal
'REPLACE 5 WITH COLUMN NUMBER OF TOTAL PULLS
Next n ' Move onto next row
也许?
答案 1 :(得分:0)
这将查看A:A中的每个标题,以及msgboxes以搜索文本开头的任何单元格下的值:
Dim cell As Range: Set cell = Range("A1")
Do While cell.Value <> ""
If UCase$(cell.Value) Like "UNIQUE PULLS*" Then
MsgBox cell.Offset(1, 0).Value
End If
Set cell = cell.Offset(0, 1)
Loop