Как найти значения с% в столбце, а затем суммировать их и поместить в пустую строку? - PullRequest
1 голос
/ 03 марта 2012

Мне было интересно, есть ли какой-нибудь метод, который может обнаружить столбец с%?После этого, суммируйте строки, которые имеют%?

Например, в следующем у меня есть изображение, столбец B -D имеет значения, которые содержат%.Общий% в B будет 130%, C будет 105%, D будет 90%.Итоговое значение будет помещено в следующую пустую строку, для этого конкретного примера это будет строка 8. Мне нужно, чтобы строка была гибкой, так как она может закончиться более чем 8.

enter image description here

Я надеюсь, что кто-то понимает, что я пытаюсь передать здесь.То, что я пытаюсь сделать, это найти% и суммировать их, сумма будет помещена в следующую пустую строку.

1 Ответ

2 голосов
/ 03 марта 2012

Я не понимаю следующий вопрос о процентах в столбце 1. Ниже приведено мое решение вашего первоначального вопроса. Он создает строку под любыми существующими строками, содержащую сумму процентов в столбце. Я отформатировал значения и покрасил их в синий, чтобы показать как. Я включил комментарии, говорящие о том, что я делаю, но не объясняющий, почему утверждение делает то, что делает. Сначала попробуйте VBA Help, а затем возвращайтесь с любыми вопросами.

Option Explicit
Sub SumPercentages()

  Dim ColCrnt As Long
  Dim ColCrntMax As Long
  Dim ColMax As Long
  Dim RowCrnt As Long
  Dim RowCrntMax As Long
  Dim RowSum As Long
  Dim TotalPerc As Double

  With Sheets("Sheet1")      ' Replace with name of your sheet

     ' Find the last used row plus one as the row on which to place
     ' the totals.  Warning, this statement will throw an error if
     ' there is a value on the last possible row.
     RowSum = .Cells.SpecialCells(xlCellTypeLastCell).Row + 1

     ' Find the last used column
     ColMax = .Cells.SpecialCells(xlCellTypeLastCell).Column

     ' Examine every used column
     For ColCrnt = 1 To ColMax

       ' Find the last used row in this column
       RowCrntMax = .Cells(Rows.Count, ColCrnt).End(xlUp).Row

       TotalPerc = 0

       ' Examine each row of this column
       For RowCrnt = 1 To RowCrntMax
         If Right(.Cells(RowCrnt, ColCrnt).NumberFormat, 1) = "%" Then
           TotalPerc = TotalPerc + Val(.Cells(RowCrnt, ColCrnt).Value)
         End If
       Next

       ' Save the value, format as percentage, colour blue
       With .Cells(RowSum, ColCrnt)
         .Value = TotalPerc
         .NumberFormat = "0%"
         .Font.Color = RGB(0, 0, 255)
       End With

     Next

  End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...