Страницы: 1 2 След.
RSS
Автоматическая удаление знака " = " в формуле
 
К примеру, есть формула =2+2+8. Нужно такая формула или макрос, что б автоматически убирало знак " = " и оставляло только 2+2+8. Встроенная функция в ексель Найти и заменить не подходит, так как большой объем данных  
 
Выделить столбцы с "большим объемом данных" - это проблема?
 
Не было б проблемой, я б не спрашивал.  
Большой объем данных, которые часто меняются. Постоянно выделять столбцы не получается (так как занимает много времени)  
 
Цитата
=ЕСЛИ(1+2=2+1;"да";"нет")
И здесь "равно" убрать?
Как расположены данные? Есть ли формулы, которые не трогать? Файл-пример не будет лишним.
 
Дмитрий, если столбцы постоянно оди и те же то макросом можно вс это делать по нажатию кнопки
Не бойтесь совершенства. Вам его не достичь.
 
Задача. Нужно перенести из столбца А данные в другой столбец (любой) только без знака " = ".
 
Цитата
Дмитрий написал:
Автоматическая удаление знака " = "
Цитата
Дмитрий написал:
Задача. Нужно перенести из столбца А данные в другой столбец (любой) только без знака " = "
интересно) для темы
Код
Sub Макрос1()
Range("A:A").Select
    Selection.Replace What:="=", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, логично) я как раз пытаюсь узнать как это сделать;)  
 
Код
Sub ubrat_znak_ravno()
    For Each x In Intersect(Selection, Selection.Parent.UsedRange)
        If x.HasFormula Then
            x.Offset(,1).Value = Mid(x.FormulaLocal, 2)
        End If
    Next
End Sub

берёт формулы выделенного диапазона и на один шаг (на одну ячейку) правее пишет результат после удаления "="

а если нужно сделать "на месте":
Код
Sub ubrat_znak_ravno()
    For Each x In Intersect(Selection, Selection.Parent.UsedRange)
        If x.HasFormula Then
            x.Value = Mid(x.FormulaLocal, 2)
        End If
    Next
End Sub
Изменено: Бахтиёр - 20.01.2021 14:49:36
 
Mershik, Спасибо ) помогло )
Изменено: Дмитрий - 20.01.2021 14:43:08
 
Дмитрий,
Цитата
Mershik написал:
Range("A:A").Select
та ладно? прям во всем?
Не бойтесь совершенства. Вам его не достичь.
 
Бахтиёр, вместо строки 3: x.Value = Mid(x.FormulaLocal, 2) (не проверял)
И это для выделенного диапазона, а у ТС ХЗ что и когда
Изменено: Jack Famous - 20.01.2021 14:44:07
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Дмитрий, то я тупанул ) все работает) спасибо за помощь  
 
Цитата
Дмитрий написал:
Дмитрий , то я тупанул )
сам себя не похвалишь никто не похвалит ) :D (шутка)
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Jack Famous:  Бахтиёр , вместо строки 3...
спасибо, не знал
 
Если можно, ещё такой вопрос. Реально ли сделать такое. Что б из столбца А:А (там формулы по типу "=2+2+2"), переносились данные в столбец B:B только без знака "=" ?
 
=ПОДСТАВИТЬ(Ф.ТЕКСТ(A1);"=";"")
 
Михаил Л, Ты лучший  :)  
 
если это делается для того, чтобы в одном столбце был результат формулы, а в другом нужно увидеть т.н. "внутрь" формулы/как идёт расчёт

То можно так (см. файл)
Правда не помню в какой версии (2010? 2013?) появилась функция =Ф.ТЕКСТ()

Ещё нажимайте несколько раз Ctrl+~ или Ctrl+Shift+~ и смотрите как меняется вид ячеек с формулами
~ - это клавиша где буква Ё
 
Бахтиёр, это делается для того, что бы потом вынести значения из скобок.

P.S
Нужно для подсчета кабеля .
 
Цитата
Дмитрий:  делается для того, что бы потом вынести значения из скобок. P.S Нужно для подсчета кабеля .
Если в столбце A внутри формулы встречается только одна пара скобок и если длина кабеля равна сумме плюсуемых чисел внутри скобок, то:
Код
Sub кабель()
    Set diap = Intersect(ActiveSheet.Range("A:A"), ActiveSheet.UsedRange)
    mas = diap.Formula
    ReDim masrez(1 To UBound(mas), 1 To 2)
        For i = 1 To UBound(mas)
            nach = InStr(mas(i, 1), "(")
            kon = InStr(mas(i, 1), ")")
            If nach > 0 And kon > 0 Then
                tekst = Mid(mas(i, 1), nach + 1, kon - nach - 1)
                arr = Split(tekst, "+")
                For n = 0 To UBound(arr)
                    sm = sm + arr(n)
                Next
                masrez(i, 1) = sm
                masrez(i, 2) = "'=" & tekst
                tekst = "": sm = 0
            End If
        Next
    diap.Offset(, 2).Resize(, 2).Value = masrez
End Sub
макрос выводит в столбец С длину кабеля, в столбец D расчёт этой длины
 
Бахтиёр, Спасибо, работает. А могу я как то привязать ячейку, куда этот макрос будет вставлять значения?  
 
да, вместо:
Код
diap.Offset(, 2).Resize(, 2).Value = masrez
например:
Код
Sheets("Лист8").Range("D4").Resize(UBound(masrez), 2).Value= masrez
будет выгружать результат начиная с ячейки D4 листа "Лист8"
Изменено: Бахтиёр - 20.01.2021 17:36:41
 
Бахтиёр, Большое спасибо
 
Бахтиёр, Столкнулся с такой проблемой.  
Изменено: Дмитрий - 21.01.2021 17:42:51
 
можете отправить файл, на котором дало ошибку
 
Дмитрий, сообщение №25. Сколько информативной площади в Вашем рисунке? Обрезать не умеете?
 
vikttur, На следующий раз учту.
 
Не поздно заменить картинку
 
отправил на почту ТС файл
Страницы: 1 2 След.
Наверх