Страницы: 1
RSS
Сумма отформатированных ячеек в столбце
 
День добрый!    
Такой вопрос: имеется столбец со множеством значений в ячейках. При этом ячейки отформатированны по разному: одни содержат обычное форматирование, другие - выделены жирным и отцентрованны. Нужно посчитать сумму отформатированных следующим образом: отцентрированых по центру и жирных.
 
Попробуйте такой код:  
===========================  
Dim i As Integer, kolCenter As Integer, kolBold As Integer  
For i = 1 To 28  
   Range("A" & i).Select  
   If ActiveCell.HorizontalAlignment = xlCenter Then kolCenter = kolCenter + 1  
   If Selection.Font.Bold = True Then kolBold = kolBold + 1  
Next i  
   MsgBox "Количество ячеек отформатированых" & Chr(13) & "по центру: " & kolCenter _  
   & Chr(13) & "жирным шрифтом: " & kolBold  
====================================  
Пример в файле
 
Спасибо за ваш вариант, но как сделать, чтоб считались не ячейки, а суммировались значения в отформатированных ячейках?
 
А у Вас в табличке нет возможности например суммы, которые Вы выделяете "жирным", дописать рядом какой-нибудь значек? Всемто выделения "жирным" рядом написать "ж"? Если да, то тогда можно попробовать массивами...
 
Extrime  
 
оригинальная таблица содержит около 700 ячеек в одних отформатированные значения, в других нет. Мне просто нужно посчитать сумму значений в отформатированных ячейках. Не хочется каждое 5ое значении вручную вводить. Можно конечно старым дедовским способом например: =sum(A1;A3;A9...А700) но как то это проблематично...
 
{quote}{login=Сергей}{date=18.09.2008 04:57}{thema=}{post}Extrime  
 
оригинальная таблица содержит около 700 ячеек в одних отформатированные значения, в других нет. Мне просто нужно посчитать сумму значений в отформатированных ячейках. Не хочется каждое 5ое значении вручную вводить. Можно конечно старым дедовским способом например: =sum(A1;A3;A9...А700) но как то это проблематично...{/post}{/quote}  
Появилась идейка, сейсас попробую...
 
Сергей, а Вам обязательно необходимо использовать "жирный" шрифт для выделения нужных сумм?
 
Приношу извинения Новичку из Минска - немного похулиганил с его кодом. Считает теперь и сумму. Так пойдёт?
 
Extrime, проблема в том, что таблица уже сделана и отформатирована раньше, а необходимость посчитать сумму появилась только сейчас. Но жирное выделение можно отменить думаю (выделю весь рабочий столбец и сниму выделение). Так что останется только центровка отличающая нужные значения от не нужных
 
Юрий М, да это то, что нужно, но excel ругается на отсутствие макроса, если я пробую запустить его снова
 
У меня не ругается. Сохраните сначала файл на диске. Потом откройте его.
 
У меня просьба, мой оффис английский, поэтому всё написанное кирилицей в ВБА я вижу каракулями. Если не сложно поправте на латиницу плиз.
 
Вот так?
 
{quote}{login=Юрий М}{date=18.09.2008 05:47}{thema=}{post}У меня не ругается. Сохраните сначала файл на диске. Потом откройте его.{/post}{/quote}  
 
Уже работает, проблема была в том, что название макроса у кнопки было написано кирилицей, а в ВБА макроса с таким названием не было. Поправил название макроса в ВБА на латиницу и всё работает. Но если не сложно, напишите слова в  ВБА с кирилицы на латиницу, а то не могу понять как суммируются значения.
 
Range("C2").Value = SumŃóņåóź  
 SumŃóņåóź - в этом слове знакомые для меня только Sum
 
Вот исправленный код целиком. Можете его вставить в модуль взамен старого.  
- - -    
Sub КоличествоФорматированыхЯчеек()  
Dim i As Integer, kolCenter As Integer, kolBold As Integer  
Dim SumBold  
Dim SumCenter  
For i = 1 To 28  
   Range("A" & i).Select  
   If ActiveCell.HorizontalAlignment = xlCenter Then  
       kolCenter = kolCenter + 1  
       SumCenter = SumCenter + ActiveCell.Value  
   End If  
   If Selection.Font.Bold = True Then  
       kolBold = kolBold + 1  
       SumBold = SumBold + ActiveCell.Value  
   End If  
Next i  
   Range("C2").Value = SumCenter  
   Range("D2").Value = SumBold  
   MsgBox "Количество ячеек отформатированых" & Chr(13) & "по центру: " & kolCenter _  
   & Chr(13) & "жирным шрифтом: " & kolBold  
End Sub  
- - -  
А вопрос я не понял - что нужно сделать?
 
Как я понял,    
"Range("C2").Value = SumCenter" например с соответствующими изменениями.    
 
Вариант в файле.    
Спасибо вам:    
Extrime  
Новичок VBA (Miнск) и  
Юрий М - вы уже второй раз находите решение для моих проблем
 
Юрий М, спасибо я всё поправил теперь всё работает! Ещё раз спасибо. Проблема была с кирилицей.
 
Ещё вот что. При большом объемt данных будет заметно обновление акрана. Поэтому добавьте вот так:  
Sub КоличествоФорматированыхЯчеек()  
Application.ScreenUpdating = False    
... тут сам код макроса  
Application.ScreenUpdating = True  
End Sub    
Тем самым Вы избежите "мигания".
 
А может вообще убрать Select. Ведь в ВБА мы можем обратиться непосредственно к ячейке без ее активизации или выбора.  
Несколько вариантов в примере. Написал сразу обращение ко всем ячейкам диапазона, поэтому оставил  'Set iCel = Range("A" & i), а можно было обращаться  просто Range("A" & i).HorizontalAlignment = xlCenter  
 
Sub SumFormatCell()  
Dim kolCenter As Integer, kolBold As Integer  
Dim SumBold As Double  
Dim SumCenter As Double  
Dim cntrlRng As Range, iCel As Range  
Dim iRow As Long, i As Long  
 
'iRow = Cells(Rows.Count, "A").End(xlUp).Row  
 
Set cntrlRng = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)  
 
Application.ScreenUpdating = False  
 
For Each iCel In cntrlRng  
 
 
'For i = 1 To iRow  
     
   'Set iCel = Range("A" & i)  
     
   If iCel.HorizontalAlignment = xlCenter  Then  
       kolCenter = kolCenter + 1  
       SumCenter = SumCenter + iCel.Value  
   End If  
     
   If iCel.Font.Bold = True Then  
       kolBold = kolBold + 1  
       SumBold = SumBold + iCel.Value  
   End If  
     
Next  
 
Range("C2").Value = SumCenter  
Range("D2").Value = SumBold  
 
Application.ScreenUpdating = True  
 
 
MsgBox "Количество ячеек отформатированых" & Chr(13) & "по центру: " & kolCenter _  
& Chr(13) & "жирным шрифтом: " & kolBold  
End Sub
 
Юрий М,  
Igor67,    
 
Попробовал оба ваших варианта - оба работают. Отдельное спасибо за необновление экрана во время счёта, а то от моргания глаза устают.
 
Вот обидно то, столько трудов, а применить не получается. Как я упоминал ранее, сумму считать нужно было для уже внесённых в ячейки значений,а файлу уже несколько лет. Всё хорошо, только в этом файле доступ к ВБА оказался запароленым. То есть макрос туда вставить и вообще что-либо увидеть в ВБА не получается. Пароль не известен... просто скопировать весь столбец в другой файл также не возможен, т.к. суммируемые значения в ячейках  это результаты формул. В связи с этим, можно ли как-то по другому решить эту задачу не прибегая к ВБА или просто обойти пароль?
 
Если Вам нужно обработать только данные, а формулы как таковые не нужны, то скопируйте весь диапазон в новую книгу. При вставке используйте "Специальную вставку". Сначала Форматы, потом Значения. Тема паролей здесь уже обсуждалась.
 
{quote}{login=Юрий М}{date=19.09.2008 12:00}{thema=}{post}Если Вам нужно обработать только данные, а формулы как таковые не нужны, то скопируйте весь диапазон в новую книгу. При вставке используйте "Специальную вставку". Сначала Форматы, потом Значения. Тема паролей здесь уже обсуждалась.{/post}{/quote}Я всегда наоборот делаю: сначала значения, затем форматы. Так как при объединенных ячейках вылезает ошибка.
Страницы: 1
Читают тему
Наверх