powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
24 сообщений из 24, страница 1 из 1
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37583956
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 задача
Есть номера телефонов
79161234567
89261234567
9167654321дом
.........
84959876543рабочий

Нужно выбрать все телефоны которые состоят из 11 цифр, как понимаю надо задать длину строки Len (11) символов,
но лучше через Like ###########, то есть все телефоны которые равны 11 цифрам #, надо удалить первую цифру, ну говорят можно прописать все условия типа Like 7########## еще типа like 8##########, но я не понимаю как все задать в VBA с удалением первой цифры???

2 задача
Имея телефоны приведенный в единый формат, нужно удалить повторяющие
9161234567 9161234567 9261234567 - то есть должно получиться : 9161234567 9261234567
типа в Экселе есть "Стили" - Условие форматирование - повторяющие значения, вот по типу такого же прицепа, но удалять???!!!

все значения находятся в разных ячейках в одной строке, строк таких окола 1 000 000!!!!
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37584065
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Focha,
по 1-й задаче
Код: vbnet
1.
2.
3.
4.
' если нумёр начинается с 7 или 8 и состоит из 11 цифр, - удалить первый цифер из нумера
if phone_num like "[78]##########" then
  phone_num = Mid$(phone_num, 2)
end if
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37584281
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотищаFocha,
по 1-й задаче
Код: vbnet
1.
2.
3.
4.
' если нумёр начинается с 7 или 8 и состоит из 11 цифр, - удалить первый цифер из нумера
if phone_num like "[78]##########" then
  phone_num = Mid$(phone_num, 2)
end if



А вот про какой мне mid говорили, а зачем после Mid знак доллара????
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37584359
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fochaа зачем после Mid знак доллара????Mid возвращает значение Variant, а Mid$ - String. В общем, чтобы избежать лишнего преобразования типов. А вообще - это написано в F1 - не ленись
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37585578
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Focha,
>зачем после Mid знак доллара????
Его неплохо ставить после Replace Left Right MsgBox и еще есть случаи
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37585634
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProFochaа зачем после Mid знак доллара????Mid возвращает значение Variant, а Mid$ - String. В общем, чтобы избежать лишнего преобразования типов. А вообще - это написано в F1 - не ленись

Читаю F1, уровень у меня в VBA нулевой, вот учусь, не получается спрашиваю)))

ааа про доллар понял, а теперь не понимаю

Sub Единый_формат()

phone_num- это что будет Range(ячейка).Select???

if phone_num like "[7]##########" then
phone_num = Mid$(phone_num, 1)
end if

phone_num- это что будет Range(ячейка).Select???

if phone_num like "[8]##########" then
phone_num = Mid$(phone_num, 1)
end if

end Sub





Ципихович ЭндрюFocha,
>зачем после Mid знак доллара????
Его неплохо ставить после Replace Left Right MsgBox и еще есть случаи

Replace ( вот тут я не понимаю как сделать так, что бы сначала он отбирал через Like строки со значениями 7##########, после чего заменял их типа , "7", "")

Left и Right - проблема в том что строки имеют больше вариантов и отображать часть левую или правую не подходит, мне нужно именно удалить

MsgBox - вывод в отдельное окно???? мне надо изменить много много строк.
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37585642
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sub Единый_формат()
Selection.Replace What:=" ", Replacement:=""
Selection.Replace What:=")", Replacement:=""
Selection.Replace What:="(", Replacement:=""
Selection.Replace What:="-", Replacement:=""
End Sub

Ну вот это типа получаеться через макрос, если удалить все лишнее так скажим,
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37585757
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Focha,
>MsgBox - вывод в отдельное окно???? мне надо изменить много много строк
Что сложно как в Ворде найти MsgBox и заменить на MsgBox$ и это не доллар а указание, что это Стринг. Главное не спутайте MsgBox - сообщение с тем где нужно выбирать
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37585761
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю, у тебя есть 30 минут на внятное объяснение, зачем после MsgBox нужно ставить $
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37585773
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro+
Ципихович Эндрю, у тебя есть 30 минут на внятное объяснение, зачем после MsgBox нужно ставить $


ахахахахха
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37585870
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fochaахахахахха
не вижу причин для смеха, ЦЭ мог бы сказать хотя бы сказать "не знаю, погорячился"

Так вот MsgBox - функция числовая и следовать совету ЦЭ не надо.
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37587469
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
>Ципихович Эндрю, у тебя есть 30 минут на внятное объяснение, зачем после MsgBox нужно ставить $
ОК, поясню Ваши словами, вопрос к Вам - зачем после, например Left нужно ставить $?
Это и есть мой ответ на вопрос "зачем после MsgBox нужно ставить $"
Всё за тем же
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37587487
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
два правила которые почти никто не соблюдает
'Если Вам нужно производить множество операций с файлами или с переменными типа String, всегда добавляйте знак $ после имени команды
'например, Mid$ вместо Mid, потому что Mid работает с параметрами типа Variant, в то время, как Mid$ работает с параметрами типа String
'что в 3 раза быстрее, например: Right$, Left$, RTrim$, LTrim$, Trim$, Mid$, StrReverse$, UCase$, LCase$, Replace$, Chr$, MsgBox$.

Len никогда не считает длину строки, а берёт готовое значение, которое всегда хранится в начале строки, поэтому лучше не сравнивать строку с "", а считать длину
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37587497
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это ты сам придумал? Если нет - где ссылка на оригинальный текст?
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37587509
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, придумал конечно не сам, а где взял уже не вспомню, именно в этой части
Len никогда не считает длину строки, а берёт готовое значение, которое всегда хранится в начале строки, поэтому лучше не сравнивать строку с "", а считать длину

Могу поискать ссылку
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37587513
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ципихович Эндрю, ну зачем Вы спорите? Не проще F1 нажать и почитать?
авторDisplays a message in a dialog box, waits for the user to click a button, and returns an Integer indicating which button the user clicked.
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37587524
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюShocker.Pro, придумал конечно не сам, а где взял уже не вспомню, именно в этой части
Len никогда не считает длину строки, а берёт готовое значение, которое всегда хранится в начале строки, поэтому лучше не сравнивать строку с "", а считать длину

Могу поискать ссылку

А я вот нашел уже.
И там умные люди вдалбливают некоему бестолковому человеку (странным образом его ник там Ципихович Эндрю", что НЕ НАДО так делать.
Вот ведь совпадение.
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37587527
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklpЦипихович Эндрю, ну зачем Вы спорите? Не проще F1 нажать и почитать?
авторDisplays a message in a dialog box, waits for the user to click a button, and returns an Integer indicating which button the user clicked.ЦЭ не знает, что такое типы данных, поэтому ему это ни о чем не скажет
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37587529
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklp,

Отображает сообщение в диалоговом окне, ожидает пользователя нажать кнопку, и возвращает целое число, указывающее, какая кнопка пользователь щелкнул
Я же писал не путать msgBox с MsgBox'oм
>Главное не спутайте MsgBox - сообщение с тем где нужно выбирать - вчера 20:39
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37587536
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
>что НЕ НАДО так делать - освежите память плиз
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37587592
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Focha,
на миллионе строк будет доолго отрабатывать.
(!) Перед эксперементами сделайте копию исходного файла.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub Единый_формат()
' это всего-лишь пример, как организовать цикл по ячейкам диапазона ...

Dim cell

' цикл: для каждой ячеки в диапазоне A1:Z50000 первого рабочего листа книги
For Each cell in Worksheets(1).Range("A1:Z50000").Cells

  ' если значение в ячейке начинается с 7 или 8 ( цифры 78 в квадратных скобках )
  ' и состоит из 11 цифр
  ' ( значения типа 9167654321дом, 84959876543рабочий пропускаются )
  if cell.Value2 like "[78]##########" then
    ' взять часть значения этой ячейки, начиная со второго символа и записать в ту-же ячейку
    cell.Value2 = Mid$(cell.Value2, 2)

  end if

Next cell

End Sub
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37587696
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ципихович Эндрюkuklp,
Я же писал не путать msgBox с MsgBox'oм
>Главное не спутайте MsgBox - сообщение с тем где нужно выбирать - вчера 20:39Ципихович Эндрю, "MsgBox - сообщение", как вы его называете(а правильно prompt), это всего лишь параметр(аргумент) функции MsgBox, никак не влияющий на возвращаемый тип данных. Но чувствую, зря распинаюсь...
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37587911
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Развели тут диалог!!!

Понял принцеп, буду делать!
...
Рейтинг: 0 / 0
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
    #37600608
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пролему решил











sub test()

Do While activecell Like "?*"
If activecell Like "[78]##########"
activecell=Right (activecell, 10)

ActiveCell.Offset(1, 0).Range("A1").Select

Else if activecell Like "#######!###"
leviecifr=Left (activecell, 7)
praviecifr=Right (activecell, 3)
activecell= leviecifr&praviecifr

ActiveCell.Offset(1, 0).Range("A1").Select

Else if activecell Like...........
.......................................
.......................................
......................................
End if

Loop

ActiveCell.Offset(1, 0).Range("A1").Select


End Sub




Как то так....тут могут быть ошибки, так как код не копировал!
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]