Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Суммирование данных ячеек с игнорированием - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Суммирование данных ячеек с игнорированием
cmivadwot Дата: Вторник, 27.06.2023, 13:58 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 478
Репутация: 87 ±
Замечаний: 0% ±

365
День добрый.
Имеется макрос суммирующий данные из ячеек нескольких файлов в один общий. Что необходимо прописать для игнорирования присутствующих в суммируемых ячейках прочерков - "-". или иным образом решить возникающие ошибки суммирования ячеек с присутствующими в них "-"
[vba]
Код
Sub сумма()
Dim r As Range, cel As Range, wb As Workbook, awb As Workbook, s$, i&
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(ThisWorkbook.Path & "\files")
s = "Обработано:"
Set r = Range("B10:AG40,B42:AG47,B48:B50") 'задание диапазона суммирования
Set awb = ThisWorkbook
r.ClearContents
'проход по всем файлам в папке "\files"
For Each objFile In objFolder.Files
    Set wb = Workbooks.Open(objFile)
    i = i + 1
    s = s & vbCr & i & "." & objFile
    'проход по ячейкам
        For Each cel In r
        cel.Value = cel.Value + wb.Sheets("Табличная форма").Range(cel.Address)
        Next
    wb.Close False
Next
MsgBox s
End Sub
[/vba]
К сообщению приложен файл: 9992437.rar (59.6 Kb)


Сообщение отредактировал cmivadwot - Вторник, 27.06.2023, 14:04
 
Ответить
СообщениеДень добрый.
Имеется макрос суммирующий данные из ячеек нескольких файлов в один общий. Что необходимо прописать для игнорирования присутствующих в суммируемых ячейках прочерков - "-". или иным образом решить возникающие ошибки суммирования ячеек с присутствующими в них "-"
[vba]
Код
Sub сумма()
Dim r As Range, cel As Range, wb As Workbook, awb As Workbook, s$, i&
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(ThisWorkbook.Path & "\files")
s = "Обработано:"
Set r = Range("B10:AG40,B42:AG47,B48:B50") 'задание диапазона суммирования
Set awb = ThisWorkbook
r.ClearContents
'проход по всем файлам в папке "\files"
For Each objFile In objFolder.Files
    Set wb = Workbooks.Open(objFile)
    i = i + 1
    s = s & vbCr & i & "." & objFile
    'проход по ячейкам
        For Each cel In r
        cel.Value = cel.Value + wb.Sheets("Табличная форма").Range(cel.Address)
        Next
    wb.Close False
Next
MsgBox s
End Sub
[/vba]

Автор - cmivadwot
Дата добавления - 27.06.2023 в 13:58
Serge_007 Дата: Вторник, 27.06.2023, 14:03 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Вместо строки[vba]
Код
cel.Value = cel.Value + wb.Sheets("Табличная форма").Range(cel.Address)
[/vba]
вставьте[vba]
Код
if isnumeric (cel) then cel.Value = cel.Value + wb.Sheets("Табличная форма").Range(cel.Address)
[/vba]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеВместо строки[vba]
Код
cel.Value = cel.Value + wb.Sheets("Табличная форма").Range(cel.Address)
[/vba]
вставьте[vba]
Код
if isnumeric (cel) then cel.Value = cel.Value + wb.Sheets("Табличная форма").Range(cel.Address)
[/vba]

Автор - Serge_007
Дата добавления - 27.06.2023 в 14:03
cmivadwot Дата: Вторник, 27.06.2023, 19:39 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 478
Репутация: 87 ±
Замечаний: 0% ±

365
вставьте
if isnumeric (cel) then cel.Value = cel.Value + wb.Sheets("Табличная форма").Range(cel.Address)

не сработало, но вроде заработало вот так.
[vba]
Код
If IsNumeric(wb.Sheets("Табличная форма").Range(cel.Address)) Then cel.Value = cel.Value + wb.Sheets("Табличная форма").Range(cel.Address)
[/vba]
 
Ответить
Сообщение
вставьте
if isnumeric (cel) then cel.Value = cel.Value + wb.Sheets("Табличная форма").Range(cel.Address)

не сработало, но вроде заработало вот так.
[vba]
Код
If IsNumeric(wb.Sheets("Табличная форма").Range(cel.Address)) Then cel.Value = cel.Value + wb.Sheets("Табличная форма").Range(cel.Address)
[/vba]

Автор - cmivadwot
Дата добавления - 27.06.2023 в 19:39
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!