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

Вход

Регистрация

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

 

= Мир MS Excel/Удаление первых 6 символов в ячейках столбца - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Удаление первых 6 символов в ячейках столбца
cresh12 Дата: Пятница, 25.09.2015, 09:53 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте! Возникла такая проблема. Необходимо заполнить столбец, скопированными данными из другого столбца, но так чтобы в каждой ячейке были числа только начиная с 7 символа, например: число 1234567890 в конечном варианте должно быть 7890. Подскажите пожалуйста как это все можно реализовать) Можно и сделать так, сначала все копировать как есть, а потом удалить первые 6 в ячейках столбца Y

и второй вопрос, как удалить символы "." и "-" в некоторых столбцах?)
таким способом почему то не получилось заменить
[vba]
Код

     For k = 1 To d
     For m = 1 To d
     Cells(k, m + 4) = Replace(Cells(k, m), ".", "", 1, 1) / 1
     Next m
Next k
[/vba]

И сама программа
[vba]
Код
Private Sub Command1_Click()

       Dim objExcel, objWorkbook As Workbook
       Set objExcel = CreateObject("EXCEL.APPLICATION")
       objExcel.Visible = False
       Application.ScreenUpdating = False
       'Ïóòü ê èñõîäíîìó ôàéëó
       Set objWorkbook = objExcel.Workbooks.Open("C:\Users\Varina_LI\Desktop\ïðèìåð\ms21.xlsx")
          
       With objWorkbook.ActiveSheet
           d = .Cells(.Rows.Count, 5).End(xlUp).Row
           arrSrc = .Range("A1 :AP" & d).Value
       End With
       objWorkbook.Close savechanges:=False
          
       ColNames = [{"MAK","PACH","IZ","MOD","NSP","NDT","SHPR","KSB","KIZ","WES","SWW","SOG","SHP","EI","NNM","NOR","GOP","ZPD","Z0","Z1","Z2","Z3","Z4","Z5","   NDOC","PROB","VER"}]

       Dim arrRes()
       ReDim arrRes(1 To UBound(arrSrc), 1 To UBound(arrSrc, 2))
       r = 1
       For i = 1 To UBound(arrSrc)
           If i = 1 Then
               For j = 1 To UBound(ColNames)
                   arrRes(r, j) = ColNames(j)
               Next j
               r = r + 1
           ElseIf Not arrSrc(i, 26) = "" Then
               For j = 1 To UBound(arrSrc, 2)
                   Data = ""
                   Select Case j
                       Case 1
                           Data = "17"
                       Case 2
                           Data = "'001"
                       Case 3
                           Data = "2"
                       Case 4
                           Data = "11"
                       Case 5
                           Data = arrSrc(i, 2)
                       Case 6
                           Data = arrSrc(i, 3)
                       Case 7
                           Data = "11"
                       Case 8
                           Data = arrSrc(i, 10)
                       Case 9
                           Data = arrSrc(i, 11)
                       Case 10
                           If arrSrc(i, 12) <> "" Then Data = arrSrc(i, 12) * 1000
                       Case 11
                           Data = arrSrc(i, 14)
                       Case 12
                           Data = arrSrc(i, 15)
                       Case 13
                           Data = "'00"
                       Case 14
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 25) Else Data = "'00"
                       Case 15
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 26) Else Data = "'0000000"
                       Case 16
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 29) * 1000 Else Data = "'000000000"
                       Case 17
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 35) Else Data = "'000"
                       Case 18
                           Data = arrSrc(i, 36)
                       Case 19
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 37) Else Data = "'00"
                       Case 20
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 38) Else Data = "'00"
                       Case 21
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 39) Else Data = "'00"
                       Case 22
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 40) Else Data = "'00"
                       Case 23
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 41) Else Data = "'00"
                       Case 24
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 42) Else Data = "'00"
                       Case 27
                           Data = "1"
                   End Select
                      
                   arrRes(r, j) = Data
               Next j
               r = r + 1
           End If
       Next i
         
       Application.ScreenUpdating = True
       Dim New_Wb As Workbook
       Set New_Wb = Workbooks.Add
       New_Wb.ActiveSheet.Range("A1").Resize(UBound(arrRes), UBound(arrRes, 2)).Value = arrRes
       'Ïóòü ãäå ñîçäàåòñÿ íîâûé ôàéë
       New_Wb.SaveAs FileName:="C:\Users\Varina_LI\Desktop\ïðèìåð\maket17_ms21.xlsx"
       MsgBox "Ìàêåò 17 äëÿ ÌÑ21 óñïåøíî ñôîðìèðîâàí"
       objExcel.ActiveWorkbook.Close savechanges:=False
End Sub

[/vba]


Сообщение отредактировал cresh12 - Пятница, 25.09.2015, 10:29
 
Ответить
СообщениеЗдравствуйте! Возникла такая проблема. Необходимо заполнить столбец, скопированными данными из другого столбца, но так чтобы в каждой ячейке были числа только начиная с 7 символа, например: число 1234567890 в конечном варианте должно быть 7890. Подскажите пожалуйста как это все можно реализовать) Можно и сделать так, сначала все копировать как есть, а потом удалить первые 6 в ячейках столбца Y

и второй вопрос, как удалить символы "." и "-" в некоторых столбцах?)
таким способом почему то не получилось заменить
[vba]
Код

     For k = 1 To d
     For m = 1 To d
     Cells(k, m + 4) = Replace(Cells(k, m), ".", "", 1, 1) / 1
     Next m
Next k
[/vba]

И сама программа
[vba]
Код
Private Sub Command1_Click()

       Dim objExcel, objWorkbook As Workbook
       Set objExcel = CreateObject("EXCEL.APPLICATION")
       objExcel.Visible = False
       Application.ScreenUpdating = False
       'Ïóòü ê èñõîäíîìó ôàéëó
       Set objWorkbook = objExcel.Workbooks.Open("C:\Users\Varina_LI\Desktop\ïðèìåð\ms21.xlsx")
          
       With objWorkbook.ActiveSheet
           d = .Cells(.Rows.Count, 5).End(xlUp).Row
           arrSrc = .Range("A1 :AP" & d).Value
       End With
       objWorkbook.Close savechanges:=False
          
       ColNames = [{"MAK","PACH","IZ","MOD","NSP","NDT","SHPR","KSB","KIZ","WES","SWW","SOG","SHP","EI","NNM","NOR","GOP","ZPD","Z0","Z1","Z2","Z3","Z4","Z5","   NDOC","PROB","VER"}]

       Dim arrRes()
       ReDim arrRes(1 To UBound(arrSrc), 1 To UBound(arrSrc, 2))
       r = 1
       For i = 1 To UBound(arrSrc)
           If i = 1 Then
               For j = 1 To UBound(ColNames)
                   arrRes(r, j) = ColNames(j)
               Next j
               r = r + 1
           ElseIf Not arrSrc(i, 26) = "" Then
               For j = 1 To UBound(arrSrc, 2)
                   Data = ""
                   Select Case j
                       Case 1
                           Data = "17"
                       Case 2
                           Data = "'001"
                       Case 3
                           Data = "2"
                       Case 4
                           Data = "11"
                       Case 5
                           Data = arrSrc(i, 2)
                       Case 6
                           Data = arrSrc(i, 3)
                       Case 7
                           Data = "11"
                       Case 8
                           Data = arrSrc(i, 10)
                       Case 9
                           Data = arrSrc(i, 11)
                       Case 10
                           If arrSrc(i, 12) <> "" Then Data = arrSrc(i, 12) * 1000
                       Case 11
                           Data = arrSrc(i, 14)
                       Case 12
                           Data = arrSrc(i, 15)
                       Case 13
                           Data = "'00"
                       Case 14
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 25) Else Data = "'00"
                       Case 15
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 26) Else Data = "'0000000"
                       Case 16
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 29) * 1000 Else Data = "'000000000"
                       Case 17
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 35) Else Data = "'000"
                       Case 18
                           Data = arrSrc(i, 36)
                       Case 19
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 37) Else Data = "'00"
                       Case 20
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 38) Else Data = "'00"
                       Case 21
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 39) Else Data = "'00"
                       Case 22
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 40) Else Data = "'00"
                       Case 23
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 41) Else Data = "'00"
                       Case 24
                           If arrSrc(i, 22) = "" Then Data = arrSrc(i, 42) Else Data = "'00"
                       Case 27
                           Data = "1"
                   End Select
                      
                   arrRes(r, j) = Data
               Next j
               r = r + 1
           End If
       Next i
         
       Application.ScreenUpdating = True
       Dim New_Wb As Workbook
       Set New_Wb = Workbooks.Add
       New_Wb.ActiveSheet.Range("A1").Resize(UBound(arrRes), UBound(arrRes, 2)).Value = arrRes
       'Ïóòü ãäå ñîçäàåòñÿ íîâûé ôàéë
       New_Wb.SaveAs FileName:="C:\Users\Varina_LI\Desktop\ïðèìåð\maket17_ms21.xlsx"
       MsgBox "Ìàêåò 17 äëÿ ÌÑ21 óñïåøíî ñôîðìèðîâàí"
       objExcel.ActiveWorkbook.Close savechanges:=False
End Sub

[/vba]

Автор - cresh12
Дата добавления - 25.09.2015 в 09:53
cresh12 Дата: Пятница, 25.09.2015, 10:42 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Нашел на форуме этот способ:
[vba]
Код
  
     Dim s
     For Each s In Range("Y2:Y" & Cells(Rows.Count, 1).End(xlUp).Row).Cells
     If Len(s) > 2 Then s.Value = Right(s, Len(s) - 5)
     Next s
[/vba]

Но почему то пишет ошибку: 1004, Сбой метода 'Rows' объекта '_Global'
 
Ответить
СообщениеНашел на форуме этот способ:
[vba]
Код
  
     Dim s
     For Each s In Range("Y2:Y" & Cells(Rows.Count, 1).End(xlUp).Row).Cells
     If Len(s) > 2 Then s.Value = Right(s, Len(s) - 5)
     Next s
[/vba]

Но почему то пишет ошибку: 1004, Сбой метода 'Rows' объекта '_Global'

Автор - cresh12
Дата добавления - 25.09.2015 в 10:42
miver Дата: Пятница, 25.09.2015, 11:12 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 37 ±
Замечаний: 0% ±

Excel 2010
cresh12, Перед задаванием подобных вопросов советую сначала просмотреть стандартные функции
[vba]
Код
Mid("1234567890", 7)
[/vba]
Второй вопрос так
[vba]
Код
Replace(Replace(CStr(Cells(k, m)), ".", ""), "-", "")
[/vba]
 
Ответить
Сообщениеcresh12, Перед задаванием подобных вопросов советую сначала просмотреть стандартные функции
[vba]
Код
Mid("1234567890", 7)
[/vba]
Второй вопрос так
[vba]
Код
Replace(Replace(CStr(Cells(k, m)), ".", ""), "-", "")
[/vba]

Автор - miver
Дата добавления - 25.09.2015 в 11:12
miver Дата: Пятница, 25.09.2015, 11:17 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 37 ±
Замечаний: 0% ±

Excel 2010
cresh12, И еще. Сложилось впечатление что вы хотите одбросить дробную часть и взять модуль от числа. Решается проще так
[vba]
Код
Fix(Abs(число))
[/vba]
 
Ответить
Сообщениеcresh12, И еще. Сложилось впечатление что вы хотите одбросить дробную часть и взять модуль от числа. Решается проще так
[vba]
Код
Fix(Abs(число))
[/vba]

Автор - miver
Дата добавления - 25.09.2015 в 11:17
cresh12 Дата: Понедельник, 28.09.2015, 11:13 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
miver, Спасибо) но возник вопрос почему в excel ячейки в общем формате, из за этого не правильно отображаются числа после данных операций, ведь функция CStr подразумевает преобразование ячейки в текстовый формат, верно?
 
Ответить
Сообщениеmiver, Спасибо) но возник вопрос почему в excel ячейки в общем формате, из за этого не правильно отображаются числа после данных операций, ведь функция CStr подразумевает преобразование ячейки в текстовый формат, верно?

Автор - cresh12
Дата добавления - 28.09.2015 в 11:13
KSV Дата: Понедельник, 28.09.2015, 12:42 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
функция CStr подразумевает преобразование ячейки в текстовый формат, верно?
Не верно! Функция CStr() выполнит преобразование не ячейки, а значения, переданного ей в качестве аргумента.
Соответственно, если у вас формат ячейки общий или числовой, и вы передаете в CStr() число, то она вернет его как текст, но Excel увидит, что вы кладете в ячейку число в текстовом формате и "исправит эту ошибку".
т.е., после этого кода в ячейку будет число [vba]
Код
Cells(1, 1) = CStr("777")
[/vba]
а после этого кода - число, как текст [vba]
Код
Cells(2, 1) = "'" & 777
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
функция CStr подразумевает преобразование ячейки в текстовый формат, верно?
Не верно! Функция CStr() выполнит преобразование не ячейки, а значения, переданного ей в качестве аргумента.
Соответственно, если у вас формат ячейки общий или числовой, и вы передаете в CStr() число, то она вернет его как текст, но Excel увидит, что вы кладете в ячейку число в текстовом формате и "исправит эту ошибку".
т.е., после этого кода в ячейку будет число [vba]
Код
Cells(1, 1) = CStr("777")
[/vba]
а после этого кода - число, как текст [vba]
Код
Cells(2, 1) = "'" & 777
[/vba]

Автор - KSV
Дата добавления - 28.09.2015 в 12:42
cresh12 Дата: Понедельник, 28.09.2015, 14:05 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
KSV, Спасибо что все так подробно объяснили)
 
Ответить
СообщениеKSV, Спасибо что все так подробно объяснили)

Автор - cresh12
Дата добавления - 28.09.2015 в 14:05
  • Страница 1 из 1
  • 1
Поиск:

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