Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2013, 13:07   #1
lioon
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 38
По умолчанию Как удалить из данных в ячейки выборочные значения

Добрый день,

Подскажите как оптимальнее решить данную задачу:
Есть столбец с данными
В ячейке есть строка:
979_2_2_008_002_КМ_01_02_00.dwg

Из нее нужно удалить с 7 по 9 символ и 4-е последних, чтобы получилось:

979_2_2_008_002_КМ_01_00
lioon вне форума Ответить с цитированием
Старый 23.10.2013, 13:24   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Смотрите функции mid, left.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 23.10.2013, 13:31   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Для ячеек A1:A100

Код:
Sub CutFileName()
  For Each Rw In [A1:A100]
     If Len(Rw.Cells(1, 1)) = 31 Then
       Rw.Cells(1, 1) = Left(Rw.Cells(1, 1), 21) & Mid(Rw.Cells(1, 1), 25, 3)
     End If
  Next Rw
End Sub
Хотя можно и формулами сделать.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 23.10.2013, 13:32   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Ещё может быть пригодятся Split(), Instr(), InStrRev(), StrReverse()
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.10.2013, 13:40   #5
lioon
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 38
По умолчанию

Спасибо большое, код помог! Я стал ещё на шаг ближе к цели
lioon вне форума Ответить с цитированием
Старый 25.10.2013, 11:10   #6
lioon
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 38
По умолчанию

Возникла сложность.


Как сделать таким образом, в примере DiemonStar, чтобы не опираться на длину строки, в данном примере она 31, а просто удалить с 7 по 9 символ с конца и 4-и последних символа

Первые символы в примере это номер договора и доп соглашения, а они могут быть разные. И буквенные обозначения могут быть 2 или 3 символа.
lioon вне форума Ответить с цитированием
Старый 25.10.2013, 11:39   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Т.е. предпочитаете чтоб ноги по этим шагам к цели кто-то другой передвигал?
Всё же выше уже подсказано - берите что нужно по задаче.

Например алгоритм для доработки:
Код:
Sub tt()
    Dim s$, a
    s = "979_2_2_008_002_КМ_01_02_00.dwg"
    MsgBox s
    s = Left(s, Len(s) - 4)
    a = Split(s, "_")
    a(7) = ""
    s = Join(a, "_")
    s = Replace(s, "__", "_")
    MsgBox s
End Sub
Ну или только split-join-replace:
Код:
Sub tt()
    Dim s$, a
    s = "979_2_2_008_002_ŹĢ_01_02_00.dwg"
    MsgBox s
    s = Split(s, ".")(0)
    a = Split(s, "_")
    a(7) = ""
    s = Join(a, "_")
    s = Replace(s, "__", "_")
    MsgBox s
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 25.10.2013 в 11:52.
Hugo121 вне форума Ответить с цитированием
Старый 25.10.2013, 11:42   #8
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Код:
Sub CutFileName()
  For Each Rw In [A1:A100]
     If Len(Rw.Cells(1, 1)) = 31 Then
       Rw.Cells(1, 1) = Left(Rw.Cells(1, 1), Len(Rw.Cells(1, 1)) - 9) & Left(Right(Rw.Cells(1, 1),6),2)
     End If
  Next Rw
End Sub
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 25.10.2013, 12:08   #9
lioon
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 38
По умолчанию

Спасибо!
Я честно пытаюсь разобраться, но когда академических знаний не хватает обращаюсь за советом
lioon вне форума Ответить с цитированием
Старый 25.10.2013, 14:02   #10
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Т.е. предпочитаете чтоб ноги по этим шагам к цели кто-то другой передвигал?
OFF
Игорь,смею предположить,что скоро появится тема о том,как получить данные из чертежей и заполнить ячейки.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить все значения Items в ListBox? quarty Общие вопросы Delphi 4 05.05.2020 21:49
Как удалить из ячейки слово, содержащее.... Solny Microsoft Office Excel 12 09.01.2013 07:43
Как удалить содержимое ячейки в таблице не стирая форулу? Залина90 Microsoft Office Excel 1 25.11.2012 13:56
Как организовать поиск значения ячейки по всем листам alec Microsoft Office Excel 7 01.05.2010 17:01
как удалить содержимое ячейки, чтобы сохранить ее формулу mvl1000000 Microsoft Office Excel 5 06.03.2010 21:27