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

Вход

Регистрация

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

 

= Мир MS Excel/Копирование данных из ячейки одного листа на другой с услов - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование данных из ячейки одного листа на другой с услов (Макросы/Sub)
Копирование данных из ячейки одного листа на другой с услов
dmr Дата: Понедельник, 30.05.2016, 11:20 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
На листе1 в ячейке B4 имеется несколько данных
3 - 305679
3 - 305672
ОТКАЗ - 305531
ОТКАЗ - 305535

Необходимо на лист2 в ячеку(и) g4 скопировать первое слово и это первое слово будет равняться условию
ОТКАЗ = 9
3 = 5

И в итоге надо чтобы в листе2 в ячейке(и) g4
было
5
5
9
9

[vba]
Код
Sub m()
With Worksheets(1)
arr = .Range("C4:B" & .Cells(Rows.Count, "C").End(xlUp).Row).Value
End With
For i2 = 1 To UBound(arr)
If arr(i2, 1) <> "" Then arr(i2, 1) = Split(arr(i2, 1))(0)
Next
Worksheets(2).Range("G4").Resize(UBound(arr), 1) = arr
End Sub
[/vba]

[moder]1. Читайте Правила форума
2. Исправляйте оформление кода (его нужно обрамлять специальными тегами - кнопка #)
3. Прикладывайте файл-пример
(2. и 3. содержатся в 1.)
[p.s.]И Вам здравствуйте[/p.s.][/moder]
К сообщению приложен файл: 10.xlsm(15Kb)


Сообщение отредактировал dmr - Понедельник, 30.05.2016, 12:06
 
Ответить
СообщениеНа листе1 в ячейке B4 имеется несколько данных
3 - 305679
3 - 305672
ОТКАЗ - 305531
ОТКАЗ - 305535

Необходимо на лист2 в ячеку(и) g4 скопировать первое слово и это первое слово будет равняться условию
ОТКАЗ = 9
3 = 5

И в итоге надо чтобы в листе2 в ячейке(и) g4
было
5
5
9
9

[vba]
Код
Sub m()
With Worksheets(1)
arr = .Range("C4:B" & .Cells(Rows.Count, "C").End(xlUp).Row).Value
End With
For i2 = 1 To UBound(arr)
If arr(i2, 1) <> "" Then arr(i2, 1) = Split(arr(i2, 1))(0)
Next
Worksheets(2).Range("G4").Resize(UBound(arr), 1) = arr
End Sub
[/vba]

[moder]1. Читайте Правила форума
2. Исправляйте оформление кода (его нужно обрамлять специальными тегами - кнопка #)
3. Прикладывайте файл-пример
(2. и 3. содержатся в 1.)
[p.s.]И Вам здравствуйте[/p.s.][/moder]

Автор - dmr
Дата добавления - 30.05.2016 в 11:20
sboy Дата: Понедельник, 30.05.2016, 14:50 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 198
Репутация: 49 ±
Замечаний: 0% ±

Excel 2007
Добрый день.
предложу решить вопрос формулой в требуемой ячейке
Код
=ЕСЛИ(ЛЕВСИМВ('Аналитика по ИБ(1)'!B4;1)="О";9;ЕСЛИ(ЛЕВСИМВ('Аналитика по ИБ(1)'!B4;1)=3;5;ЛЕВСИМВ('Аналитика по ИБ(1)'!B4;1)))
 
Ответить
СообщениеДобрый день.
предложу решить вопрос формулой в требуемой ячейке
Код
=ЕСЛИ(ЛЕВСИМВ('Аналитика по ИБ(1)'!B4;1)="О";9;ЕСЛИ(ЛЕВСИМВ('Аналитика по ИБ(1)'!B4;1)=3;5;ЛЕВСИМВ('Аналитика по ИБ(1)'!B4;1)))

Автор - sboy
Дата добавления - 30.05.2016 в 14:50
Roman777 Дата: Понедельник, 30.05.2016, 15:44 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 703
Репутация: 75 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Такой Вариант:
[vba]
Код
Sub tst()
Dim ar1()
i_n& = Worksheets(1).Cells(Rows.count, 2).End(xlUp).Row
ar2 = Worksheets(1).Cells(1, 2).Resize(i_n).Value
ReDim ar1(i_n)
For i& = 4 To i_n
   ar1(i) = Split(ar2(i, 1))
   If UCase(ar1(i)(0)) = "ОТКАЗ" Then
      ar1(i)(0) = 9
   ElseIf ar1(i)(0) = "3" Then
      ar1(i)(0) = 5
   Else
      ar1(i)(0) = ""
   End If
   Worksheets(2).Cells(i, 2) = ar1(i)(0)
Next i
End Sub
[/vba]


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Понедельник, 30.05.2016, 15:45
 
Ответить
СообщениеТакой Вариант:
[vba]
Код
Sub tst()
Dim ar1()
i_n& = Worksheets(1).Cells(Rows.count, 2).End(xlUp).Row
ar2 = Worksheets(1).Cells(1, 2).Resize(i_n).Value
ReDim ar1(i_n)
For i& = 4 To i_n
   ar1(i) = Split(ar2(i, 1))
   If UCase(ar1(i)(0)) = "ОТКАЗ" Then
      ar1(i)(0) = 9
   ElseIf ar1(i)(0) = "3" Then
      ar1(i)(0) = 5
   Else
      ar1(i)(0) = ""
   End If
   Worksheets(2).Cells(i, 2) = ar1(i)(0)
Next i
End Sub
[/vba]

Автор - Roman777
Дата добавления - 30.05.2016 в 15:44
dmr Дата: Вторник, 31.05.2016, 07:21 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Скажите если полностью ячейку нужно заменить, все заменяется но выходит ошибка Subscript of range

В ячейке в первом листе слово ОМС, его нужно заменить на 1

[vba]
Код
'Копируем код и его переделываем ОМС на свой с условием
i_n& = Worksheets(1).Cells(Rows.Count, 2).End(xlUp).Row
ar2 = Worksheets(1).Cells(1, 14).Resize(i_n).Value
ReDim ar1(i_n)
For i& = 4 To i_n
ar1(i) = Split(ar2(i, 1))
If UCase(ar1(i)(0)) = "ОМС" Then
ar1(i)(0) = 1
ElseIf ar1(i)(0) = "3" Then
ar1(i)(0) = 5
Else
ar1(i)(0) = ""
End If
Worksheets(2).Cells(i, 8) = ar1(i)(0)
Next i
End Sub
[/vba]
К сообщению приложен файл: 11.xlsm(17Kb)


Сообщение отредактировал dmr - Вторник, 31.05.2016, 08:00
 
Ответить
СообщениеСкажите если полностью ячейку нужно заменить, все заменяется но выходит ошибка Subscript of range

В ячейке в первом листе слово ОМС, его нужно заменить на 1

[vba]
Код
'Копируем код и его переделываем ОМС на свой с условием
i_n& = Worksheets(1).Cells(Rows.Count, 2).End(xlUp).Row
ar2 = Worksheets(1).Cells(1, 14).Resize(i_n).Value
ReDim ar1(i_n)
For i& = 4 To i_n
ar1(i) = Split(ar2(i, 1))
If UCase(ar1(i)(0)) = "ОМС" Then
ar1(i)(0) = 1
ElseIf ar1(i)(0) = "3" Then
ar1(i)(0) = 5
Else
ar1(i)(0) = ""
End If
Worksheets(2).Cells(i, 8) = ar1(i)(0)
Next i
End Sub
[/vba]

Автор - dmr
Дата добавления - 31.05.2016 в 07:21
китин Дата: Вторник, 31.05.2016, 07:49 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3450
Репутация: 549 ±
Замечаний: 0% ±

Excel 2007;Excel 2010
Понять не могу: это другой вопрос или продолжение этого вопроса? %)
Походу все же другой.
dmr, создайте лучше новую тему с этим вопросом. Решение уже есть


Не судите строго:я пытаюсь научиться
ЯД 41001877306852/WM R249698041931; Z239672726538
 
Ответить
СообщениеПонять не могу: это другой вопрос или продолжение этого вопроса? %)
Походу все же другой.
dmr, создайте лучше новую тему с этим вопросом. Решение уже есть

Автор - китин
Дата добавления - 31.05.2016 в 07:49
dmr Дата: Вторник, 31.05.2016, 08:07 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Тему создал новую, но перед этим вопрос, все получается но выходит ошибка Subscript of range
 
Ответить
СообщениеТему создал новую, но перед этим вопрос, все получается но выходит ошибка Subscript of range

Автор - dmr
Дата добавления - 31.05.2016 в 08:07
Roman777 Дата: Вторник, 31.05.2016, 11:56 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 703
Репутация: 75 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
dmr, а "ОМС" у Вас должен лежать в 14 столбце?
Предположу, что там некоторые ячейки пустые. Тогда можно проверить:
[vba]
Код
Sub dsd()
Dim ar1()
'Копируем код и его переделываем ОМС на свой с условием
i_n& = Worksheets(1).Cells(Rows.Count, 2).End(xlUp).Row
ar2 = Worksheets(1).Cells(1, 14).Resize(i_n).Value
ReDim ar1(i_n)
For i& = 4 To i_n
  If ar2(i, 1) <> "" Then
  ar1(i) = Split(ar2(i, 1))
    If UCase(ar1(i)(0)) = "ОМС" Then
       ar1(i)(0) = 1
    ElseIf ar1(i)(0) = "3" Then
       ar1(i)(0) = 5
    Else
       ar1(i)(0) = ""
    End If
    Worksheets(2).Cells(i, 8) = ar1(i)(0)
  End If
Next i
End Sub
[/vba]


Много чего не знаю!!!!
 
Ответить
Сообщениеdmr, а "ОМС" у Вас должен лежать в 14 столбце?
Предположу, что там некоторые ячейки пустые. Тогда можно проверить:
[vba]
Код
Sub dsd()
Dim ar1()
'Копируем код и его переделываем ОМС на свой с условием
i_n& = Worksheets(1).Cells(Rows.Count, 2).End(xlUp).Row
ar2 = Worksheets(1).Cells(1, 14).Resize(i_n).Value
ReDim ar1(i_n)
For i& = 4 To i_n
  If ar2(i, 1) <> "" Then
  ar1(i) = Split(ar2(i, 1))
    If UCase(ar1(i)(0)) = "ОМС" Then
       ar1(i)(0) = 1
    ElseIf ar1(i)(0) = "3" Then
       ar1(i)(0) = 5
    Else
       ar1(i)(0) = ""
    End If
    Worksheets(2).Cells(i, 8) = ar1(i)(0)
  End If
Next i
End Sub
[/vba]

Автор - Roman777
Дата добавления - 31.05.2016 в 11:56
dmr Дата: Вторник, 31.05.2016, 12:53 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Да он лежит в 14строке Листа1 и копирует в 8строку Листа2, все работает но выходит ошибка Subscript out of range
 
Ответить
СообщениеДа он лежит в 14строке Листа1 и копирует в 8строку Листа2, все работает но выходит ошибка Subscript out of range

Автор - dmr
Дата добавления - 31.05.2016 в 12:53
dmr Дата: Вторник, 31.05.2016, 13:00 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Ошибка ушла, Спасибо

Скажите а если бы у меня в ячейке14 было написано ОМС"123" то как написать это в этой строчке

[vba]
Код
If UCase(ar1(i)(0)) = ""ОМС"123" Then
[/vba]

не пропускает выдает ошибку


Сообщение отредактировал dmr - Вторник, 31.05.2016, 13:00
 
Ответить
СообщениеОшибка ушла, Спасибо

Скажите а если бы у меня в ячейке14 было написано ОМС"123" то как написать это в этой строчке

[vba]
Код
If UCase(ar1(i)(0)) = ""ОМС"123" Then
[/vba]

не пропускает выдает ошибку

Автор - dmr
Дата добавления - 31.05.2016 в 13:00
_Boroda_ Дата: Вторник, 31.05.2016, 13:05 | Сообщение № 10
Группа: Модераторы
Ранг: Экселист
Сообщений: 9375
Репутация: 3948 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
если бы у меня в ячейке14 было написано ОМС"123" то как написать

А так если?
"ОМС""13"""


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
если бы у меня в ячейке14 было написано ОМС"123" то как написать

А так если?
"ОМС""13"""

Автор - _Boroda_
Дата добавления - 31.05.2016 в 13:05
Roman777 Дата: Вторник, 31.05.2016, 13:05 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 703
Репутация: 75 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
dmr, По правилам форума: 1 вопрос - 1 тема. Этот вопрос уже к Вашему текущему не относится. И при создании тем на других форумах, стоит указать о Кроссе (это вежливо).
[moder]Согласен, формально да, но не совсем. Все-таки связь некоторая есть. Да и мелочь такая ...


Много чего не знаю!!!!
 
Ответить
Сообщениеdmr, По правилам форума: 1 вопрос - 1 тема. Этот вопрос уже к Вашему текущему не относится. И при создании тем на других форумах, стоит указать о Кроссе (это вежливо).
[moder]Согласен, формально да, но не совсем. Все-таки связь некоторая есть. Да и мелочь такая ...

Автор - Roman777
Дата добавления - 31.05.2016 в 13:05
dmr Дата: Вторник, 31.05.2016, 13:14 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
ВСЕ РЕШИЛ

"ОМС""123"""


Сообщение отредактировал dmr - Вторник, 31.05.2016, 13:21
 
Ответить
СообщениеВСЕ РЕШИЛ

"ОМС""123"""

Автор - dmr
Дата добавления - 31.05.2016 в 13:14
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование данных из ячейки одного листа на другой с услов (Макросы/Sub)
Страница 1 из 11
Поиск:

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