Kot_Idiot
1
Excel

Исправить макрос копирования значения ячейки с листа на лист

12.02.2013, 20:04. Показов 3926. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Господа, честно говоря совсем в предмете не разбираюсь, не могли бы вы посмотреть код макроса под эксель, по идее он должен копировать значение ячейки с листа на лист?

Visual Basic
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 Analitikmini() 'ÏÁÊ
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim sh1$, sh2$, sh3$, podr1$, podr2$, podr3$, arr1, arr3, sss, arr2, Fs, err_sh, strShErr$, err_str$
Dim Lr1&, Lr2&, Lr3&, mon1&, mon2&, mon3&, i&, j&, s As Double
Dim Dict1 As Object, Dict2 As Object, Dict3 As Object
Set Dict1 = CreateObject("Scripting.Dictionary")
Set Dict2 = CreateObject("Scripting.Dictionary")
Set Dict3 = CreateObject("Scripting.Dictionary")
With Sheets("ÏÁÊ")
    sh1 = .[m9].Value: sh2 = .[p9].Value: sh3 = .[s9].Value
    podr1 = .[k8].Value: podr2 = .[n8].Value: podr3 = .[q8].Value
    mon1 = .[m5].Value: mon2 = .[p5].Value: mon3 = .[s5].Value
    Fs = Range("b1:b" & .Cells(.Rows.Count, 2).End(xlUp).Row).Value
End With
On Error GoTo err_sh
strShErr = sh1
With Sheets(sh1)
    Lr1 = .Cells(.Rows.Count, 2).End(xlUp).Row
    arr1 = .Range("a6:p" & Lr1).Value
    For i = 1 To UBound(arr1)
        If arr1(i, 2) = podr1 Then
            For j = 5 To mon1 + 4
             s = s + arr1(i, j)
            Next
            Dict1.Add arr1(i, 2) & arr1(i, 4), CDbl(arr1(i, mon1 + 4)) & "|" & s
            s = 0
         End If
    Next
End With
strShErr = sh2
With Sheets(sh2)
    Lr2 = .Cells(.Rows.Count, 2).End(xlUp).Row
    arr2 = .Range("a6:p" & Lr2).Value
     For i = 1 To UBound(arr2)
        If arr2(i, 2) = podr2 Then
            For j = 5 To mon2 + 4
             s = s + arr2(i, j)
            Next
            Dict2.Add arr2(i, 2) & arr2(i, 4), CDbl(arr2(i, mon2 + 4)) & "|" & s
            s = 0
         End If
    Next
End With
strShErr = sh3
With Sheets(sh3)
    Lr3 = .Cells(.Rows.Count, 2).End(xlUp).Row
    arr3 = .Range("a6:p" & Lr3).Value
     For i = 1 To UBound(arr3)
        If arr3(i, 2) = podr3 Then
            For j = 5 To mon3 + 4
             s = s + arr3(i, j)
            Next
            Dict3.Add arr3(i, 2) & arr3(i, 4), CDbl(arr3(i, mon3 + 4)) & "|" & s
            s = 0
         End If
    Next
End With
On Error Resume Next
With Sheets("ÏÁÊ")
    For i = 13 To UBound(Fs)
     If Len(Fs(i, 1)) > 0 Then
     sss = Split(Dict1.Item(podr1 & Fs(i, 1)), "|")
     .Range("k" & i) = CDbl(sss(0)) / 1000
     .Range("l" & i) = CDbl(sss(1)) / 1000
     sss = Split(Dict2.Item(podr2 & Fs(i, 1)), "|")
     .Range("n" & i) = CDbl(sss(0)) / 1000
     .Range("o" & i) = CDbl(sss(1)) / 1000
       sss = Split(Dict3.Item(podr3 & Fs(i, 1)), "|")
     .Range("q" & i) = CDbl(sss(0)) / 1000
     .Range("r" & i) = CDbl(sss(1)) / 1000
     End If
    Next
End With
Application.ScreenUpdating = -1
Application.Calculation = xlAutomatic
Exit Sub
err_sh:
If Err.Number = 9 Then err_str = "Âûáåðèòå äðóãîé ïåðèîä" & strShErr
MsgBox "ÂÍÈÌÀÍÈÅ!" & vbCrLf & "Äàííûå çà âûáðàííûé ïåðèîä îòñóòñòâóþò" & vbCrLf & err_str
Application.ScreenUpdating = -1
Application.Calculation = xlAutomatic
End Sub
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2013, 20:04
Ответы с готовыми решениями:

Макрос для копирования данных с листа на лист с сортировкой
здравствуйте!! помогите в решении задачи. есть экселевский файл, нужен макрос для кнопки, при...

Макрос, которых обходит все непустые ячейки текущего листа, добавляет в массив залитые ячейки и на новый лист
Здравствуйте! Необходимо написать макрос, который бы "обходил" все непустые ячейки текущего...

Как исправить макрос копирования данных Excel так, чтобы он вставлял только значения?
Макрос, приведённый ниже, вставляет и значения ячеек и форматы. А как сделать, чтобы этот же макрос...

Макрос копирования заданного диапазона значений на другой лист
Добрый день, форумчане. Вводная информация по задачке, которая поступила недавно в мой адрес:...

3
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
12.02.2013, 21:30 2
Здравствуйте. Крутой замес. Так, на первый взгляд, столько там всего. А не проще будет просто определить по какому-либо критерию первый диапазон и присвоить его обьектной переменной mRng (Set mRng=~firstRange~). Дальше находите следующий диапазон/ячейку любимым Вами способом и расширяете имеющийся.
Приблизительно так:
Set mRng=Union(mRng,cells(1,3))
где cells(1,3) - свежеопределенный диапазон/ячейка.
В конце у Вас соберется один диапазон из множества, скорее всего, несмежных. А дальше как Вам удобней. В массив - и на листN, копировать - и на лист (мне лично так меньше нравится), комбинировать - и на лист....
1
Kot_Idiot
12.02.2013, 21:36 3
Спасибо, я правда ничего не понял )). Скажите проще, этот код операбелен? Или проще заново переписать чем в этой каше разбираться?
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
12.02.2013, 21:43 4
Если чесно - ничего сказать не могу. Кидайте какой-то пример на листе - тогда можно смотреть. Но уже только то, что там куча словарей, меня настораживает. Если будете кидать - у меня MSOff 2003.
И еще. Уже устал говорить. Вот всем говорю - я инопланетанин. Никто не верит. А тут я сам испугался. Увидел Ваше спасибо и думаю: "Ничего себе! Еще и не делал ничего, а уже все работает!"
0
12.02.2013, 21:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2013, 21:43
Помогаю со студенческими работами здесь

Изменить макрос переноса данных с листа на другой лист
Ребята что в этом коде нужно изменить чтобы он мог все данные в ячейках из Листа1 в пределах 22...

Копирование ячеек с листа на лист по условию одной ячейки
Уважаемые специалисты Excel, прошу Вашей помощи в написании макроса. Сам на просторах интернета...

Макрос копирования одного диапазона с каждого листа книги в другой файл
Доброго времени суток, уважаемые форумчане! очень срочно нужна ваша помощь с небольшим макросом....

Макрос для копирования двух диапазонов с формулами в активный лист любой другой книги
Пытался сделать с помощью записи макросов, не работает. Копирует только последний диапазон....


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru