Excel从以相同单词开头的列中添加值?

时间:2016-02-18 09:57:47

标签: excel vba

我工作的同事似乎花了很多时间从电子表格中获取数据,然后计算出百分比,然后将其粘贴到报告中。

我很确定有一种更快捷的方式,但由于对Ecxel的经验很少,因此很难证明这一点。

Excel Spreadsheet

我已经创建了一个宏来删除字段中的任何不必要的文本,所以它现在只是一个值。

我的问题是,从中获取数据总是有不同数量的字段。

我需要值的字段是直接位于以&#34开头的任何字段的字段; Unique Pulls"一旦我能解决这个问题,其余的应该是非常直接的。

2 个答案:

答案 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