Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения? / 24 сообщений из 24, страница 1 из 1
19.12.2011, 21:30
    #37583956
Focha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
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
19.12.2011, 23:14
    #37584065
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
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
20.12.2011, 07:31
    #37584281
Focha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
скукотища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
20.12.2011, 09:35
    #37584359
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
Fochaа зачем после Mid знак доллара????Mid возвращает значение Variant, а Mid$ - String. В общем, чтобы избежать лишнего преобразования типов. А вообще - это написано в F1 - не ленись
...
Рейтинг: 0 / 0
20.12.2011, 18:28
    #37585578
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
Focha,
>зачем после Mid знак доллара????
Его неплохо ставить после Replace Left Right MsgBox и еще есть случаи
...
Рейтинг: 0 / 0
20.12.2011, 19:04
    #37585634
Focha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
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
20.12.2011, 19:09
    #37585642
Focha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
Sub Единый_формат()
Selection.Replace What:=" ", Replacement:=""
Selection.Replace What:=")", Replacement:=""
Selection.Replace What:="(", Replacement:=""
Selection.Replace What:="-", Replacement:=""
End Sub

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


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

Так вот MsgBox - функция числовая и следовать совету ЦЭ не надо.
...
Рейтинг: 0 / 0
21.12.2011, 17:47
    #37587469
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
Shocker.Pro,
>Ципихович Эндрю, у тебя есть 30 минут на внятное объяснение, зачем после MsgBox нужно ставить $
ОК, поясню Ваши словами, вопрос к Вам - зачем после, например Left нужно ставить $?
Это и есть мой ответ на вопрос "зачем после MsgBox нужно ставить $"
Всё за тем же
...
Рейтинг: 0 / 0
21.12.2011, 17:53
    #37587487
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
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
21.12.2011, 17:57
    #37587497
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
Это ты сам придумал? Если нет - где ссылка на оригинальный текст?
...
Рейтинг: 0 / 0
21.12.2011, 18:00
    #37587509
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
Shocker.Pro, придумал конечно не сам, а где взял уже не вспомню, именно в этой части
Len никогда не считает длину строки, а берёт готовое значение, которое всегда хранится в начале строки, поэтому лучше не сравнивать строку с "", а считать длину

Могу поискать ссылку
...
Рейтинг: 0 / 0
21.12.2011, 18:01
    #37587513
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
Ципихович Эндрю, ну зачем Вы спорите? Не проще 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
21.12.2011, 18:04
    #37587524
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
Ципихович ЭндрюShocker.Pro, придумал конечно не сам, а где взял уже не вспомню, именно в этой части
Len никогда не считает длину строки, а берёт готовое значение, которое всегда хранится в начале строки, поэтому лучше не сравнивать строку с "", а считать длину

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

А я вот нашел уже.
И там умные люди вдалбливают некоему бестолковому человеку (странным образом его ник там Ципихович Эндрю", что НЕ НАДО так делать.
Вот ведь совпадение.
...
Рейтинг: 0 / 0
21.12.2011, 18:05
    #37587527
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
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
21.12.2011, 18:06
    #37587529
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
kuklp,

Отображает сообщение в диалоговом окне, ожидает пользователя нажать кнопку, и возвращает целое число, указывающее, какая кнопка пользователь щелкнул
Я же писал не путать msgBox с MsgBox'oм
>Главное не спутайте MsgBox - сообщение с тем где нужно выбирать - вчера 20:39
...
Рейтинг: 0 / 0
21.12.2011, 18:07
    #37587536
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
Shocker.Pro,
>что НЕ НАДО так делать - освежите память плиз
...
Рейтинг: 0 / 0
21.12.2011, 18:37
    #37587592
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
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
21.12.2011, 20:06
    #37587696
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
Ципихович Эндрюkuklp,
Я же писал не путать msgBox с MsgBox'oм
>Главное не спутайте MsgBox - сообщение с тем где нужно выбирать - вчера 20:39Ципихович Эндрю, "MsgBox - сообщение", как вы его называете(а правильно prompt), это всего лишь параметр(аргумент) функции MsgBox, никак не влияющий на возвращаемый тип данных. Но чувствую, зря распинаюсь...
...
Рейтинг: 0 / 0
21.12.2011, 22:36
    #37587911
Focha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007-2010 VBA как удалить символ?/ как удалить одинаковые значения?
Развели тут диалог!!!

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











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


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