Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/26: Рейтинг темы: голосов - 26, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 12

Копирование данных из одной таблицы в другую согласно названиям строк и столбцов

25.12.2011, 14:29. Показов 5395. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
не могу написать макрос(((( не знаю как прописать синтакс

У меня есть таблица с исходными данными, там указано количество товаров по названию и стране происхождения.
мне нужно перенести цифры (количество товаров) согласно названию и стране происхождения из таблицы «Исходные данные» в таблицу «Копия». Просто скопировать я не могу, потому что названия товаров и стран в таблице «Копия» указанны в другом порядке.
Я пробовала задать два массива D
Visual Basic
1
im x as Range, y as Range
Задать область для x, y
Visual Basic
1
2
3
Set x=Range(„A:A“)
Set y=Range(“B:D”)
Set x=y
Задать шлейф: чтобы программа открыла «Исходные данные», просмотрела название и данные (цифры), запомнила. Потом открыла «Копия» сравнила по названиям строк и столбцов и вставила нужное значение.
Но я к сожалению не так хорошо знаю vba чтобы написать этот код(((

что то не так

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Макрос1()
Dim x As Range, y As Range
Set x = Range("A:A")
Set y = Range("B:D")
Set x = y
Do
Windows("Исходные данные.xls").Activate
Sheets("Лист3").Select
If Cells(i, 2) <> "" Then
i = i + 1
End If
Loop
 
Do
Windows("Копия.xls").Activate
Sheets("Лист3").Select
If Cells(i, 1) = x Then
Cells(i, 2) = y
End If
 
Loop
End Sub
Помогите,пожалууйста, кто чем может
Вложения
Тип файла: rar Desktop.rar (8.4 Кб, 41 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.12.2011, 14:29
Ответы с готовыми решениями:

Копирование столбцов из одной таблицы в другую.
В БД у меня есть 2 таблицы tabl1 и tabl2. В tabl1 поля: a, a1, a2, a3; В tabl2 Поля: b, a1, a2, b3. Как запросом скопировать все...

Builder 6 BDE+SQL копирование столбцов из одной таблицы в другую
В общем есть : Paradox + BDE необходимо из 2х таблиц перенести данные в главную путем SQL запроса. возникает проблема: как...

Копирование строки из одной таблицы в другую с изменением значений двух столбцов
Объясню суть проблемы. Не хватает мозгов реализовать задуманное в программном коде, а тему диплома поменять уже нельзя. Делаю программу по...

10
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 12
25.12.2011, 14:36  [ТС]
поправка: там не смайл это Range от "B" до "D"
0
1703 / 190 / 19
Регистрация: 20.11.2011
Сообщений: 281
25.12.2011, 15:42
Чтоб не делать поправок, используйте спец. теги, см. рисунок.
Visual Basic
1
2
3
4
5
6
7
8
Sub www()
    With Range("B2:d6")
        .Formula = _
        "=VLOOKUP(RC1,'[Исходные данные.xls]Лист3'!R2C1:R6C4," & _
        "MATCH(R1C,'[Исходные данные.xls]Лист3'!R1C1:R1C4,0),0)"
        .Value = .Value
    End With
End Sub
Миниатюры
Копирование данных из одной таблицы в другую согласно названиям строк и столбцов  
Вложения
Тип файла: xls Копия.xls (33.0 Кб, 24 просмотров)
2
1703 / 190 / 19
Регистрация: 20.11.2011
Сообщений: 281
25.12.2011, 16:02
Лучше:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub www()
Dim s$, wb As Workbook: s = ",'[Исходные данные.xls]Лист3'!"
Set wb = GetObject(ThisWorkbook.Path & "\" & "Исходные данные.xls")
    With ThisWorkbook.Sheets("Лист3").Range("B2:d6")
        .Formula = _
        "=VLOOKUP(RC1" & s & "R2C1:R6C4," & _
        "MATCH(R1C" & s & "R1C1:R1C4,0),0)"
        .Value = .Value
    End With
    wb.Close 0
End Sub
Так исходная книга не обязательно д.б. открыта.
Вложения
Тип файла: xls Копия.xls (35.0 Кб, 42 просмотров)
2
25.12.2011, 16:18

Не по теме:

+1 за код!
А картинку прибить-бы на полэкрана каждому вновь входящему:D

2
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 12
25.12.2011, 16:43  [ТС]
Спасибо огромное, kuklp !!!!
и за картинку тоже )))
0
 Аватар для Апострофф
9908 / 3928 / 742
Регистрация: 11.10.2011
Сообщений: 5,908
25.12.2011, 17:07
Не профессионально и не рационально, зато дешево и сердито (а именно так я и пишу чаще всего)
Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub Макрос1()
Dim RI As Range, RC As Range, CI As Range, CC As Range
Set RI = Workbooks("Исходные данные.xls").Worksheets("Лист3").UsedRange
Set RC = Workbooks("Копия.xls").Worksheets("Лист3").UsedRange
For Each CI In RI
    For Each CC In RC
      If RI(1, CI.Column) = RC(1, CC.Column) And RI(CI.Row, 1) = RC(CC.Row, 1) Then CC = CI
    Next CC
Next CI
End Sub

Не по теме:

Не хотел показывать, но что-то понесло:)

2
1703 / 190 / 19
Регистрация: 20.11.2011
Сообщений: 281
25.12.2011, 17:17

Не по теме:

Привет, Володь. Я и сам поначалу по привычке с других форумов тыкал на диез(#). Пока не закралось смутное сомнение - а чего это у меня синтаксис не подсвечивается, да и Памирыч каждый пост правит(теги)...:-)Ну, справедливости ради, этот "vb" еще поди найди. Особенно нам, старперам. Зрение уже ни к..

А по поводу кода - для небольших объемов в самый раз.
0
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 12
26.12.2011, 22:51  [ТС]
спасибо, Апострофф , но у меня почему то в таблице "Копия" после копирования столбец с названиями переноситься в другую сторону, вправо.

Товар Б Товар А Товар В
Германия 8 200 16
Англия 15 100 17
Испания 20 300 23
Италия 91 27 23
Франция 91 27 23

А стало так:

Товар Б Товар А Товар В  
15 100 17 Германия
8 200 16 Англия
20 300 23 Испания
88 400 78 Италия
91 27 23 Франция
0
 Аватар для Апострофф
9908 / 3928 / 742
Регистрация: 11.10.2011
Сообщений: 5,908
27.12.2011, 08:52
А у меня всё правильно считает? См. вложение
Ошибка связана, скорее всего, с UsedRange и тем, что на твоих листах есть следы бурной предыдущей деятельности!
В этом случае UsedRange возвращает непредсказуемый регион и нужно по другому определять область данных...
Вложения
Тип файла: zip d1.zip (9.8 Кб, 40 просмотров)
0
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 12
27.12.2011, 23:34  [ТС]
Апострофф, спасибо, да я поменяла UsedRange на Range("A16"). все нормально )
но у меня еще одна заминка возникла. таблица которой я пользуюсь на работе несколько другая, а именно там больше строк (до 100) и есть пустые строки.
для того чтобы макрос перепрыгивал через строчки я вписала такое :
Visual Basic
1
If CC=" " Then CI = ""
в принципе работает, но может быть есть варианты получше ?

но из за того что табл достаточно большая, макрос работает немного долго. может есть еще какие то варианты решения такой задачи ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.12.2011, 23:34
Помогаю со студенческими работами здесь

Копирование данных из одной таблицы в другую в пределах одной базы. Не работает счетчик
Делаю копирование данных из одной таблицы в другую в пределах одной базы. procedure TForm16.Button2Click(Sender: TObject); var ...

Копирование данных из одной таблицы в другую
procedure TForm10.sTreeViewEx1Change(Sender: TObject; Node: TTreeNode); begin if streeviewex1.Selected.SelectedIndex=2 then while...

Копирование данных из одной таблицы в другую
Есть два файла с разными таблицами, надо по номеру из 3-го столбца в одной таблице найти и скопировать данные из другой. Как в примере в...

Копирование данных из одной таблицы в другую
хочу копировать из одной таблицы на другой. Но дает ошибку.. procedure TForm1.Button1Click(Sender: TObject); begin try ...

Копирование данных из одной таблицы в другую.
Доброго всем времени суток. Возникла такая проблема. Есть две таблицы - исходная Сотрудники (Имя, Фамилия, Отчество, должность) и ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru