Здравствуйте! Возникла такая проблема. Необходимо заполнить столбец, скопированными данными из другого столбца, но так чтобы в каждой ячейке были числа только начиная с 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
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]
Здравствуйте! Возникла такая проблема. Необходимо заполнить столбец, скопированными данными из другого столбца, но так чтобы в каждой ячейке были числа только начиная с 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
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
miver, Спасибо) но возник вопрос почему в excel ячейки в общем формате, из за этого не правильно отображаются числа после данных операций, ведь функция CStr подразумевает преобразование ячейки в текстовый формат, верно?
miver, Спасибо) но возник вопрос почему в excel ячейки в общем формате, из за этого не правильно отображаются числа после данных операций, ведь функция CStr подразумевает преобразование ячейки в текстовый формат, верно?cresh12
функция CStr подразумевает преобразование ячейки в текстовый формат, верно?
Не верно! Функция CStr() выполнит преобразование не ячейки, а значения, переданного ей в качестве аргумента. Соответственно, если у вас формат ячейки общий или числовой, и вы передаете в CStr() число, то она вернет его как текст, но Excel увидит, что вы кладете в ячейку число в текстовом формате и "исправит эту ошибку". т.е., после этого кода в ячейку будет число [vba]
Код
Cells(1, 1) = CStr("777")
[/vba] а после этого кода - число, как текст [vba]
функция CStr подразумевает преобразование ячейки в текстовый формат, верно?
Не верно! Функция CStr() выполнит преобразование не ячейки, а значения, переданного ей в качестве аргумента. Соответственно, если у вас формат ячейки общий или числовой, и вы передаете в CStr() число, то она вернет его как текст, но Excel увидит, что вы кладете в ячейку число в текстовом формате и "исправит эту ошибку". т.е., после этого кода в ячейку будет число [vba]
Код
Cells(1, 1) = CStr("777")
[/vba] а после этого кода - число, как текст [vba]