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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2013, 12:21   #1
Sergey19
 
Регистрация: 06.05.2013
Сообщений: 8
Радость Копирование значений из других ячеек в одну

Такая проблема:
в ячейке А1 написано: Сидоров
в ячейке А2 написано: Петр Иванович
в ячейке А3 написано: Слесарь 4-го разряда
Как сделать так чтобы нажав комбинацию клавиш на ячейке А1, значение из ячейки А2 скопировалось в конец значения ячейки А1, а значение из ячейки А3 переместилось в ячейку А2 Т.е. получилось так:
в ячейке А1 написано: Сидоров Петр Иванович
в ячейке А2 написано: Слесарь 4-го разряда
Sergey19 вне форума Ответить с цитированием
Старый 05.08.2013, 12:56   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub Move2Left()
  With ActiveCell
    If .Column <> 1 Then Exit Sub
    If .Offset(0, 2) = "" Then Exit Sub
    Cells(.Row, 1) = Cells(.Row, 1) & " " & Cells(.Row, 2)
    Cells(.Row, 2) = Cells(.Row, 3)
    Cells(.Row, 3).ClearContents
  End With
End Sub
макрос копируйте в модуль, назначте ему комбинацию клавиш и пользуйтесь.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 08.08.2013, 11:53   #3
Sergey19
 
Регистрация: 06.05.2013
Сообщений: 8
По умолчанию

Спасибо макрос класный практически то что надо, но мне нужно чтобы он работал сверху вниз (по строкам) а он как я понял (я долго разбирался) работает слева направо по столбцам можно както его поправить чтобы он работал так как я написал в примере.
Sergey19 вне форума Ответить с цитированием
Старый 08.08.2013, 12:16   #4
Sergey19
 
Регистрация: 06.05.2013
Сообщений: 8
По умолчанию

Все я понял как так сделать:

Sub Move2Left()
With ActiveCell
If .Row <> 1 Then Exit Sub
If .Offset(2, 0) = "" Then Exit Sub
Cells(1, .Column) = Cells(1, .Column) & " " & Cells(2, .Column)
Cells(2, .Column) = Cells(3, .Column)
Cells(3, .Column).ClearContents
End With
End Sub

Но теперь как сделать чтоб он работал по всему листу а не только в строке 1,2,3 или хотябы в столбце А1,2,3... и т.д

Последний раз редактировалось Sergey19; 08.08.2013 в 12:21. Причина: дописать захотел
Sergey19 вне форума Ответить с цитированием
Старый 08.08.2013, 12:17   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

извините, что-то я не внимательно задачу прочитал...
Код:
Sub Move2Up()
  With ActiveCell
    If .Offset(2, 0) = "" Then Exit Sub ' не указана должность - макрос не работает
    ActiveCell = ActiveCell & " " & .offset(1, 0)
    .offset(1, 0) = .offset(2, 0)
    .offset(2, 0).ClearContents
  End With
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 08.08.2013, 12:22   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а по всему листу - это, извините, в какую сторону вправо или вниз? (экстрасенс из меня никакой, пытался мысленно вызвать изображение Вашего листа, настроился, представил себе компьютер, экран монитора, закрыл глаза... а начали мелькать смутные силуэты обнаженных теток...)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 08.08.2013, 12:38   #7
Sergey19
 
Регистрация: 06.05.2013
Сообщений: 8
По умолчанию

нет у мея есть файл такого формата:
в ячейке А1: Сидоров
в ячейке А2: Петр Иванович
в ячейке А3: слесарь 4 разряда

Затем еще
в ячейке А5: Иванов
в ячейке А6: Сергей Владимирович
в ячейке А7: электрогазосварщик 4 разряда
и т.д

надо все это обработать, а вручную займет оч много времени там около 1000 позиций, поэтому с макросом заморочился
Sergey19 вне форума Ответить с цитированием
Старый 08.08.2013, 13:02   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub UpData()
  Dim r As Long
  Application.ScreenUpdating = False:       r = 1
  Do
    Application.StatusBar = r
    Cells(r, 1) = Cells(r, 1) & " " & Cells(r + 1, 1)
    Cells(r + 1, 1) = Cells(r + 2, 1)
    Cells(r + 2, 1).ClearContents:          r = r + 4
  Loop Until Cells(r, 1) = ""
  Application.ScreenUpdating = True
  Application.StatusBar = False
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расширение зависимости значений ячеек от ниспадающих ячеек Mevok Microsoft Office Excel 8 08.06.2013 16:25
копирование значений ячеек с разных листов в один moose123 Microsoft Office Excel 8 30.04.2013 13:04
автозаполнение данных в текст бокс из других ячеек ahrejiok Microsoft Office Excel 3 15.01.2012 13:12
Копирование значений поля со сдвигом на одну строку. kulon БД в Delphi 1 28.04.2011 15:48
копирование ячеек из книг в одну(общую) DEsh Microsoft Office Excel 3 12.11.2010 12:38