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

Вход

Регистрация

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

 

= Мир MS Excel/в ячейке Excel сбита формула как выйти на нее пользователю? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » в ячейке Excel сбита формула как выйти на нее пользователю? (Макросы/Sub)
в ячейке Excel сбита формула как выйти на нее пользователю?
lopuxi Дата: Понедельник, 23.11.2015, 10:56 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
Помогите выполнить в общем то простую задачу.
Иногда в моей большой сетке, происходит сбой в таких формулах как Сумм() срзнач() и т.д.
И я решил написать макрос который бы пробегался по данным строкам с этими формулами и суммировал их.

1. это я сделал. Мы берем значение в ячейки где стоит формула сумм(), для того что бы прибавить его к другой формуле, где так же прописана формула Сумм(). Но не берем те ячейки, которые пустые:
[vba]
Код

            If MP.Cells(NumRow, iCol).Value <> "" Then
                TotalRow2 = MP.Cells(irow, iCol).Value + TotalRow2
                MP.Cells(NumRow, iCol).Value = TotalRow2
            End If
[/vba]

2. Но бывает так, что макрос мне выдает ошибку. В случаи если произошло стирание формулы =СУММ(#ССЫЛКА!). И в этом случаи срабатывал бы Error.
Тут можно наверное два варианта рассмотреть.

Вариант А - просто переходим через select на ячейку с ошибкой и правим ручками. (хотя бы так)
Вариант Б - Макрос сам понимает в чем дело и рисует формулу заново.

Спасибо!
[moder]Приложите файл с примером.[/moder]
К сообщению приложен файл: _____.xlsm (23.6 Kb)


О_о ...и так можно было?

Сообщение отредактировал lopuxi - Понедельник, 23.11.2015, 11:22
 
Ответить
СообщениеПомогите выполнить в общем то простую задачу.
Иногда в моей большой сетке, происходит сбой в таких формулах как Сумм() срзнач() и т.д.
И я решил написать макрос который бы пробегался по данным строкам с этими формулами и суммировал их.

1. это я сделал. Мы берем значение в ячейки где стоит формула сумм(), для того что бы прибавить его к другой формуле, где так же прописана формула Сумм(). Но не берем те ячейки, которые пустые:
[vba]
Код

            If MP.Cells(NumRow, iCol).Value <> "" Then
                TotalRow2 = MP.Cells(irow, iCol).Value + TotalRow2
                MP.Cells(NumRow, iCol).Value = TotalRow2
            End If
[/vba]

2. Но бывает так, что макрос мне выдает ошибку. В случаи если произошло стирание формулы =СУММ(#ССЫЛКА!). И в этом случаи срабатывал бы Error.
Тут можно наверное два варианта рассмотреть.

Вариант А - просто переходим через select на ячейку с ошибкой и правим ручками. (хотя бы так)
Вариант Б - Макрос сам понимает в чем дело и рисует формулу заново.

Спасибо!
[moder]Приложите файл с примером.[/moder]

Автор - lopuxi
Дата добавления - 23.11.2015 в 10:56
SLAVICK Дата: Понедельник, 23.11.2015, 12:25 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Можно использовать проверку значения, если ошибка - скопировать формулу слева от нее :
[vba]
Код
Private Sub CommandButton1_Click()
' Подведение итогов среди итогов по всем городам, в самой нижней части МП
NumRow = 26

TotalRow2 = 0
For iCol = 10 To 26
    For irow = 17 To NumRow
        If Cells(irow, 2).Interior.ColorIndex = 46 Then
            If Cells(NumRow, iCol).Value <> "" Then
                Cells(irow, iCol).Select
                If IsError(Cells(irow, iCol).Value) Then Cells(irow, iCol).FormulaR1C1 = Cells(irow, iCol - 1).FormulaR1C1
                MsgBox Cells(irow, iCol).Value
                TotalRow2 = Cells(irow, iCol).Value + TotalRow2
                Cells(NumRow, iCol).Value = TotalRow2
            End If
        End If
    Next
TotalRow2 = 0
Next
End Sub
[/vba]

Одного не пойму - зачем Вы столько msgBox ов выводите?
К сообщению приложен файл: 7321561.xlsm (23.1 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Понедельник, 23.11.2015, 12:28
 
Ответить
СообщениеМожно использовать проверку значения, если ошибка - скопировать формулу слева от нее :
[vba]
Код
Private Sub CommandButton1_Click()
' Подведение итогов среди итогов по всем городам, в самой нижней части МП
NumRow = 26

TotalRow2 = 0
For iCol = 10 To 26
    For irow = 17 To NumRow
        If Cells(irow, 2).Interior.ColorIndex = 46 Then
            If Cells(NumRow, iCol).Value <> "" Then
                Cells(irow, iCol).Select
                If IsError(Cells(irow, iCol).Value) Then Cells(irow, iCol).FormulaR1C1 = Cells(irow, iCol - 1).FormulaR1C1
                MsgBox Cells(irow, iCol).Value
                TotalRow2 = Cells(irow, iCol).Value + TotalRow2
                Cells(NumRow, iCol).Value = TotalRow2
            End If
        End If
    Next
TotalRow2 = 0
Next
End Sub
[/vba]

Одного не пойму - зачем Вы столько msgBox ов выводите?

Автор - SLAVICK
Дата добавления - 23.11.2015 в 12:25
lopuxi Дата: Понедельник, 23.11.2015, 12:31 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
Одного не пойму - зачем Вы столько msgBox ов выводите?


Msgbox это я просто не удалил. Для теста вывел. проверить верно складывает или нет.
Так то он в макросе не участвует.

Да спасибо кстати за идею скопировать формулу слева, в случаи ошибки. )


О_о ...и так можно было?

Сообщение отредактировал lopuxi - Понедельник, 23.11.2015, 12:32
 
Ответить
Сообщение
Одного не пойму - зачем Вы столько msgBox ов выводите?


Msgbox это я просто не удалил. Для теста вывел. проверить верно складывает или нет.
Так то он в макросе не участвует.

Да спасибо кстати за идею скопировать формулу слева, в случаи ошибки. )

Автор - lopuxi
Дата добавления - 23.11.2015 в 12:31
Manyasha Дата: Понедельник, 23.11.2015, 12:32 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
lopuxi, еще один вариант:
[vba]
Код
Private Sub CommandButton1_Click()
    ' Подведение итогов среди итогов по всем городам, в самой нижней части МП
    NumRow = 26
    Dim k&
    Dim formStr$, funcName
    
    For iCol = 10 To 26
        TotalRow2 = 0: k = 0
        For irow = 17 To NumRow
            If Cells(irow, 2).Interior.ColorIndex = 46 Then
                funcName = Split(Cells(irow, iCol).FormulaR1C1, "(")
                If UBound(funcName) > 0 Then formStr = funcName(0) & "(R[-" & k & "]C:R[-1]C" & ")": Cells(irow, iCol).FormulaR1C1 = formStr
                TotalRow2 = Cells(irow, iCol).Value + TotalRow2:  k = 0
            Else
                k = k + 1
            End If
            
        Next irow
        If (Cells(NumRow, iCol).Value) <> "" Then Cells(NumRow, iCol).Value = TotalRow2
    Next iCol
End Sub
[/vba]
Работает, если в формулах указан диапазон через ":" (типа Сумм(А1:А3), Срзнач(А1:А3))
К сообщению приложен файл: 111.xlsm (22.3 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеlopuxi, еще один вариант:
[vba]
Код
Private Sub CommandButton1_Click()
    ' Подведение итогов среди итогов по всем городам, в самой нижней части МП
    NumRow = 26
    Dim k&
    Dim formStr$, funcName
    
    For iCol = 10 To 26
        TotalRow2 = 0: k = 0
        For irow = 17 To NumRow
            If Cells(irow, 2).Interior.ColorIndex = 46 Then
                funcName = Split(Cells(irow, iCol).FormulaR1C1, "(")
                If UBound(funcName) > 0 Then formStr = funcName(0) & "(R[-" & k & "]C:R[-1]C" & ")": Cells(irow, iCol).FormulaR1C1 = formStr
                TotalRow2 = Cells(irow, iCol).Value + TotalRow2:  k = 0
            Else
                k = k + 1
            End If
            
        Next irow
        If (Cells(NumRow, iCol).Value) <> "" Then Cells(NumRow, iCol).Value = TotalRow2
    Next iCol
End Sub
[/vba]
Работает, если в формулах указан диапазон через ":" (типа Сумм(А1:А3), Срзнач(А1:А3))

Автор - Manyasha
Дата добавления - 23.11.2015 в 12:32
lopuxi Дата: Среда, 25.11.2015, 11:53 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
еще один вариант:


Ух ты) Вообще супер! Никогда бы не додумался что так можно сделать. СПАСИБО! )


О_о ...и так можно было?
 
Ответить
Сообщение
еще один вариант:


Ух ты) Вообще супер! Никогда бы не додумался что так можно сделать. СПАСИБО! )

Автор - lopuxi
Дата добавления - 25.11.2015 в 11:53
Мир MS Excel » Вопросы и решения » Вопросы по VBA » в ячейке Excel сбита формула как выйти на нее пользователю? (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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