Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / автозаполнение в Excel / 19 сообщений из 19, страница 1 из 1
18.01.2007, 10:10
    #34263695
natata
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
есть две таблицы (на разных листах)
1-я таблица: артикул,остатки
2-я таблица: артикул, продажи

2-я таблица больше первой, в первой есть артикулы, которые отсутствуют во второй.
надо написать макрос, который бы заполнял таблицу:
3-я таблица: артикул, остатки, продажи, результат. Причем, если нет остатков, но есть продажи, то ставил бы минус и кол-во продаж, если есть остатки, но нет продаж, то ставил бы "нет продаж" в соответствующую ячейку.
Размер третьей таблицы должен складываться из объединения первых двух.

Спасибо!

Сама пыталась, застряла вот на этом:
Dim x As Integer
For x = 2 To 26
Range("A" & x).Select
Selection.Copy
Sheets("Таблица2").Select
Range("B4" & x).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("отчет").Select
Range("C" & x).Select
ActiveSheet.Paste
Next x
End Sub

и вообще не уверена, что правильным путем пошла.
Заранее спасибо за помощь новичкам
...
Рейтинг: 0 / 0
18.01.2007, 11:22
    #34264030
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
Sub CheckTables()

Dim RestsSh As Worksheet
Dim SalesSh As Worksheet

Const RestsArticleColumnN =  1 
Const RestsAmountColumnN =  2 
Const RestsFirstDataRow =  2 

Const SalesArticleColumnN =  1 
Const SalesAmountColumnN =  2 
Const SalesFirstDataRow =  2 

Dim TargetSh As Worksheet
Dim TargetNewRowN As Long
Const TargetArticleColumnN =  1 
Const TargetRestsColumnN =  2 
Const TargetSalesColumnN =  3 
Const TargetFirstDataRow =  2 

Dim CellInTarget As Range

Dim RowIndex As Long


    Set RestsSh = Worksheets("Sheet1")
    Set SalesSh = Worksheets("Sheet2")


    Set TargetSh = Workbooks.Add.ActiveSheet
    TargetSh.Cells( 1 , TargetArticleColumnN).Value = "Артикул"
    TargetSh.Cells( 1 , TargetRestsColumnN).Value = "Остаток"
    TargetSh.Cells( 1 , TargetFirstDataRow).Value = "Продажи"
    
    TargetNewRowN = TargetFirstDataRow
    
'    сбор всех артикулов и данных
    RowIndex = RestsFirstDataRow
    Do
        If TargetSh.Columns( 1 ).Find(RestsSh.Cells(RowIndex, RestsArticleColumnN).Value) Is Nothing Then
            TargetSh.Cells(TargetNewRowN, TargetArticleColumnN).Value = RestsSh.Cells(RowIndex, RestsArticleColumnN).Value
            TargetSh.Cells(TargetNewRowN, TargetRestsColumnN).Value = RestsSh.Cells(RowIndex, RestsAmountColumnN).Value
            TargetNewRowN = TargetNewRowN +  1 
        End If
        RowIndex = RowIndex +  1 
    Loop Until Trim(RestsSh.Cells(RowIndex, RestsArticleColumnN).Value) = ""
    
    
    RowIndex = SalesFirstDataRow
    Do
        Set CellInTarget = TargetSh.Columns( 1 ).Find(SalesSh.Cells(RowIndex, SalesArticleColumnN).Value)
        If CellInTarget Is Nothing Then
            TargetSh.Cells(TargetNewRowN, TargetArticleColumnN).Value = SalesSh.Cells(RowIndex, SalesArticleColumnN).Value
            TargetSh.Cells(TargetNewRowN, TargetSalesColumnN).Value = SalesSh.Cells(RowIndex, SalesAmountColumnN).Value
            TargetNewRowN = TargetNewRowN +  1 
        Else
            CellInTarget.Offset( 0 ,  2 ).Value = SalesSh.Cells(RowIndex, SalesAmountColumnN).Value
        End If
        RowIndex = RowIndex +  1 
    Loop Until Trim(SalesSh.Cells(RowIndex, SalesArticleColumnN).Value) = ""
    
    
'   проеврка продаж и наличия

    RowIndex = TargetFirstDataRow
    
    Do
        If CDbl("0" & TargetSh.Cells(RowIndex, TargetRestsColumnN).Value) =  0  _
        And CDbl("0" & TargetSh.Cells(RowIndex, TargetSalesColumnN).Value) <>  0  Then
            TargetSh.Cells(RowIndex, TargetRestsColumnN).Value = "-"
        ElseIf CDbl("0" & TargetSh.Cells(RowIndex, TargetRestsColumnN).Value) <>  0  _
        And CDbl("0" & TargetSh.Cells(RowIndex, TargetSalesColumnN).Value) =  0  Then
            TargetSh.Cells(RowIndex, TargetSalesColumnN).Value = "нет продаж"
        End If
        RowIndex = RowIndex +  1 
    Loop Until TargetSh.Cells(RowIndex, TargetArticleColumnN).Value = ""
    
    
    Set CellInTarget = Nothing
    Set TargetSh = Nothing
    Set RestsSh = Nothing
    Set SalesSh = Nothing

End Sub


не забудьте указать правильные значения для переменных и констант

Код: plaintext
Const RestsArticleColumnN = 1Const RestsAmountColumnN = 2Const RestsFirstDataRow = 2Const SalesArticleColumnN = 1Const SalesAmountColumnN = 2Const SalesFirstDataRow = 2Set RestsSh = Worksheets("Sheet1")Set SalesSh = Worksheets("Sheet2")
...
Рейтинг: 0 / 0
18.01.2007, 11:50
    #34264180
natata
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
похоже работает, но разобраться самой сложно. Пока вот какие вопросы:
данные формируются в новой книге, а надо в этой же, на листе 4 "результаты", не могу найти где это происходит?
...
Рейтинг: 0 / 0
18.01.2007, 11:52
    #34264199
natata
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
vbapro[src vba]Sub CheckTables()

не забудьте указать правильные значения для переменных и констант

Код: plaintext
Const RestsArticleColumnN = 1Const RestsAmountColumnN = 2Const RestsFirstDataRow = 2Const SalesArticleColumnN = 1Const SalesAmountColumnN = 2Const SalesFirstDataRow = 2Set RestsSh = Worksheets("Sheet1")Set SalesSh = Worksheets("Sheet2")

заменила ("Sheet1") и ("Sheet2"), смысл остальных пока не поняла
...
Рейтинг: 0 / 0
18.01.2007, 11:52
    #34264200
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
natataпохоже работает, но разобраться самой сложно. Пока вот какие вопросы:
данные формируются в новой книге, а надо в этой же, на листе 4 "результаты", не могу найти где это происходит?
вместо
Set TargetSh = Workbooks.Add.ActiveSheet
сделай
Set TargetSh = Worksheets("результаты")
...
Рейтинг: 0 / 0
18.01.2007, 12:00
    #34264260
natata
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
вылетает ошибка:
Run-time error'9':
Subscript out of range
...
Рейтинг: 0 / 0
18.01.2007, 12:05
    #34264286
natata
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
с этим разобралась, теперь ошибка здесь:
If CDbl("0" & TargetSh.Cells(RowIndex, TargetRestsColumnN).Value) = 0 _
And CDbl("0" & TargetSh.Cells(RowIndex, TargetSalesColumnN).Value) <> 0 Then

пишет:
run-time error '13':
type mismatch
...
Рейтинг: 0 / 0
18.01.2007, 12:10
    #34264311
natata
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
и результат третьего столбца немного не тот:
в третьем столбце должны быть результаты продаж:
остатки(из табл.1)-суточные продажи(из табл.2)=результаты продаж
...
Рейтинг: 0 / 0
18.01.2007, 12:32
    #34264431
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
вы же вначале псали код, значит раздираетесь, все, что теперь пишеле легко исправить, кроме этого нужны конкретные данные, чтоб посмотреть из-за чего ошибка
...
Рейтинг: 0 / 0
18.01.2007, 12:44
    #34264494
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
natata vbapro[src vba]Sub CheckTables()

не забудьте указать правильные значения для переменных и констант

Код: plaintext
Const RestsArticleColumnN = 1 - номер колонки с артикулами на листе остатковConst RestsAmountColumnN = 2 - номер колонки с количеством остатка на листе остатковConst RestsFirstDataRow = 2 - номер строки с которой начинаются данне т.е. после шапки таблицы на листе остатковConst SalesArticleColumnN = 1 - номер колонки с артикулами на листе продажConst SalesAmountColumnN = 2 - номер колонки с количеством остатка на листе продажConst SalesFirstDataRow = 2 - номер строки с которой начинаются данне т.е. после шапки таблицы на листе продажSet RestsSh = Worksheets("Sheet1")Set SalesSh = Worksheets("Sheet2")

заменила ("Sheet1") и ("Sheet2"), смысл остальных пока не поняла
...
Рейтинг: 0 / 0
18.01.2007, 13:35
    #34264785
natata
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
vbaproвы же вначале псали код, значит раздираетесь, все, что теперь пишеле легко исправить, кроме этого нужны конкретные данные, чтоб посмотреть из-за чего ошибка
Извините, я же написала, что новичок. Прилагаю файл. Задание на первой странице, остались проблемы в первой строке.
...
Рейтинг: 0 / 0
18.01.2007, 13:56
    #34264903
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
попробуй так
...
Рейтинг: 0 / 0
18.01.2007, 14:10
    #34264975
natata
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
там то же самое???
а еще там коды аналитики нужны, можешь показать место куда их вставлять?
...
Рейтинг: 0 / 0
18.01.2007, 14:16
    #34265011
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
natataтам то же самое???
а еще там коды аналитики нужны, можешь показать место куда их вставлять?
могу показать, потом спросите, как это сделать и будем переписываться до вечера. Напишите побробненько и детально задачу и что нужно, чтоб прочтя то, что написали, никаких дополнительных вопросов не было.
...
Рейтинг: 0 / 0
18.01.2007, 14:21
    #34265034
natata
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
Я же файл прикрепила, там ВСЕ задание на первом листе "задание".
...
Рейтинг: 0 / 0
18.01.2007, 14:24
    #34265045
natata
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
На всякий случай повторюсь:
Написать макрос для формирования отчета по продукции, находящейся в дефиците (дефицит - остатки меньше суточных продаж), с кодом аналитики больше, чем 999 и меньше, чем 2000. Сортировка по возрастанию артикулов. Исходные данные - таблица 1, таблица 2. Сформировать данный отчет.
Таблица1: Артикул Наименование Код аналитики Цена, руб. Остатки, шт.
Таблица2: Артикул Суточные продажи, шт.
...
Рейтинг: 0 / 0
19.01.2007, 14:29
    #34268289
natata
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
Подскажите, пожалуйста куда и что в приведенном коде надо вставить, чтобы в конце оставались только продажи с кодом аналитики >999/ Спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
25.11.2009, 15:42
    #36331203
Britva
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
автозаполнение в Excel
памагите с формулой "заполнение случайными числами от 2 до 5" ???
...
Рейтинг: 0 / 0
25.11.2009, 15:59
    #36331275
автозаполнение в Excel
=случмежду(2;5). Должна быть установлена надстройка "Пакет анализа". Сервис - Надстройки - Пакет анализа установить галочку
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / автозаполнение в Excel / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]