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

Вход

Регистрация

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

 

= Мир MS Excel/найти латиницу и закрасить - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
найти латиницу и закрасить
sergey1978 Дата: Среда, 07.10.2015, 11:11 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 100% ±

Excel 2010
Прошу помочь подправить макрос которий находит на листе380 в колонке В латиницу затем копирует всю строчку на лист1
при етом исключаются строки если значение колонки С равно 0000000000. хочу также исключить строки, т.е чтоби не копировались на другой лист,
если в ячейке колонки B все символи на латинице, а также закрасить на листе1 латинские символи(в скопированих строках)
в примере на листе1 результат отработки макроса, на листе2 как нужно

[vba]
Код
Sub latin()
Dim iLastRow As Long, jLastRow As Long, i As Long
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
With Sheets("Лист2")
jLastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 2
.Cells(jLastRow, 4).Font.Bold = True
.Cells(jLastRow, 4).Value = "Латиница в фио"
For i = 2 To iLastRow
If Cells(i, 2) Like "*[A-Za-z]*" And Cells(i, 3) <> "0000000000" Then
Union(Range(Cells(i, 1), Cells(i, 10)), Range(Cells(i, 10), Cells(i, 18))).Copy .Cells(jLastRow + 1, 1)
jLastRow = jLastRow + 1
End If
Next
End With
End Sub
[/vba]
К сообщению приложен файл: 1583121.xls (13.9 Kb)


Сообщение отредактировал Pelena - Среда, 07.10.2015, 11:24
 
Ответить
СообщениеПрошу помочь подправить макрос которий находит на листе380 в колонке В латиницу затем копирует всю строчку на лист1
при етом исключаются строки если значение колонки С равно 0000000000. хочу также исключить строки, т.е чтоби не копировались на другой лист,
если в ячейке колонки B все символи на латинице, а также закрасить на листе1 латинские символи(в скопированих строках)
в примере на листе1 результат отработки макроса, на листе2 как нужно

[vba]
Код
Sub latin()
Dim iLastRow As Long, jLastRow As Long, i As Long
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
With Sheets("Лист2")
jLastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 2
.Cells(jLastRow, 4).Font.Bold = True
.Cells(jLastRow, 4).Value = "Латиница в фио"
For i = 2 To iLastRow
If Cells(i, 2) Like "*[A-Za-z]*" And Cells(i, 3) <> "0000000000" Then
Union(Range(Cells(i, 1), Cells(i, 10)), Range(Cells(i, 10), Cells(i, 18))).Copy .Cells(jLastRow + 1, 1)
jLastRow = jLastRow + 1
End If
Next
End With
End Sub
[/vba]

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

Excel 2010
sergey1978, Вот
[vba]
Код
Sub latin()
     Dim iLastRow As Long, jLastRow As Long, i As Long
     iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
     With Sheets("Лист2")
         jLastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 2
         .Cells(jLastRow, 4).Font.Bold = True
         .Cells(jLastRow, 4).Value = "Латиница в фио"
         For i = 2 To iLastRow
             Set cll = .Cells(jLastRow + 1, 1)
             If isLat(Cells(i, 2).Value) And Cells(i, 3) <> "0000000000" Then
                 Union(Range(Cells(i, 1), Cells(i, 10)), Range(Cells(i, 10), Cells(i, 18))).Copy cll
                 jLastRow = jLastRow + 1
             End If
             For j = 1 To Len(cll.Offset(, 1).Value)
                 l = Mid(cll.Offset(, 1).Value, j, 1)
                 If l Like "[A-Z]" Or l Like "[a-z]" Then
                     cll.Offset(, 1).Characters(Start:=j, Length:=1).Font.Color = -16776961
                 End If
             Next j
         Next
         .Select
     End With
End Sub

Function isLat(t As String) As Boolean
     isLat = False
     For i = 1 To Len(t)
         l = Mid(t, i, 1)
         If l Like "[А-Я]" Or l Like "[а-я]" Then
             isLat = True
             Exit Function
         End If
     Next i
End Function
[/vba]
К сообщению приложен файл: 121.xlsm (20.2 Kb)
 
Ответить
Сообщениеsergey1978, Вот
[vba]
Код
Sub latin()
     Dim iLastRow As Long, jLastRow As Long, i As Long
     iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
     With Sheets("Лист2")
         jLastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 2
         .Cells(jLastRow, 4).Font.Bold = True
         .Cells(jLastRow, 4).Value = "Латиница в фио"
         For i = 2 To iLastRow
             Set cll = .Cells(jLastRow + 1, 1)
             If isLat(Cells(i, 2).Value) And Cells(i, 3) <> "0000000000" Then
                 Union(Range(Cells(i, 1), Cells(i, 10)), Range(Cells(i, 10), Cells(i, 18))).Copy cll
                 jLastRow = jLastRow + 1
             End If
             For j = 1 To Len(cll.Offset(, 1).Value)
                 l = Mid(cll.Offset(, 1).Value, j, 1)
                 If l Like "[A-Z]" Or l Like "[a-z]" Then
                     cll.Offset(, 1).Characters(Start:=j, Length:=1).Font.Color = -16776961
                 End If
             Next j
         Next
         .Select
     End With
End Sub

Function isLat(t As String) As Boolean
     isLat = False
     For i = 1 To Len(t)
         l = Mid(t, i, 1)
         If l Like "[А-Я]" Or l Like "[а-я]" Then
             isLat = True
             Exit Function
         End If
     Next i
End Function
[/vba]

Автор - miver
Дата добавления - 07.10.2015 в 12:55
sergey1978 Дата: Среда, 07.10.2015, 13:29 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 100% ±

Excel 2010
miver
у меня на робочем файле 200 000 строк, ексель закривается


Сообщение отредактировал sergey1978 - Среда, 07.10.2015, 13:30
 
Ответить
Сообщениеmiver
у меня на робочем файле 200 000 строк, ексель закривается

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

Excel 2010
sergey1978, Можете сохранить в виде текстового файла - кинуть в архив - и выложить тут?
Или добавте
[vba]
Код
        For i = 2 To iLastRow
             Application.StatusBar = "Номер строки = " & i
[/vba]
И посмотрите на какой строке вылетает ;)
 
Ответить
Сообщениеsergey1978, Можете сохранить в виде текстового файла - кинуть в архив - и выложить тут?
Или добавте
[vba]
Код
        For i = 2 To iLastRow
             Application.StatusBar = "Номер строки = " & i
[/vba]
И посмотрите на какой строке вылетает ;)

Автор - miver
Дата добавления - 07.10.2015 в 14:48
sergey1978 Дата: Среда, 07.10.2015, 15:03 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 100% ±

Excel 2010
miver
вылетает на 4737
 
Ответить
Сообщениеmiver
вылетает на 4737

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

Excel 2010
sergey1978, Ну так выложите строки с 4700 по 5000


Сообщение отредактировал miver - Среда, 07.10.2015, 15:13
 
Ответить
Сообщениеsergey1978, Ну так выложите строки с 4700 по 5000

Автор - miver
Дата добавления - 07.10.2015 в 15:11
sergey1978 Дата: Среда, 07.10.2015, 15:18 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 100% ±

Excel 2010
к сожалению немогу
 
Ответить
Сообщениек сожалению немогу

Автор - sergey1978
Дата добавления - 07.10.2015 в 15:18
miver Дата: Среда, 07.10.2015, 15:22 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 37 ±
Замечаний: 0% ±

Excel 2010
Тогда сами посмотрите чем эта строка отличается от других
Попробуйте прогнать с 4700 по 5000 строку
Будет вылетать ?
Если да, то удалите ее и еще раз попробуйте
 
Ответить
СообщениеТогда сами посмотрите чем эта строка отличается от других
Попробуйте прогнать с 4700 по 5000 строку
Будет вылетать ?
Если да, то удалите ее и еще раз попробуйте

Автор - miver
Дата добавления - 07.10.2015 в 15:22
  • Страница 1 из 1
  • 1
Поиск:

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