Макрос сравнивающий таблицы на разных листах Excel - VB

Узнай цену своей работы

Формулировка задачи:

Доброй ночи, всем!!!
Нужна помощь!
Есть две таблицы на разных листах. Необходимо из листа2 считывать информацию о наименовании дисциплины, это столбец "Наименование дисциплины" (Философия, Иностранный язык, и.т.д) и соответствующее количество часов, это столбец "Всего по ГОСу" и сравнивать с информацией на листе1, где также есть столбцы содержащие наименование дисциплины и количество часов. При не совпадении количества часов, выводить наименование дисциплины на лист3.
Ну вот, вроде всё! =)
Если кто-то знает как это сделать, подскажите пожалуйста!
Кстати, я там что-то пыталась делать, макрос Сравнение=)))
Буду очень благодарна!

Решение задачи: «Макрос сравнивающий таблицы на разных листах Excel»

textual
Листинг программы
<font color="blue">Option</font> <font color="blue">Explicit</font>
<font color="blue">Sub</font> Сравнение()

<font color="blue">Dim</font> temp$, temph$
<font color="blue">Dim</font> source_ <font color="blue">As</font> <font color="blue">Object</font>, target_ <font color="blue">As</font> <font color="blue">Object</font>, tocopy_ <font color="blue">As</font> <font color="blue">Object</font>, x <font color="blue">As</font> Range
<font color="blue">Dim</font> iFirstAddress$, blank_cell <font color="blue">As</font> Range
<font color="blue">Dim</font> cc <font color="blue">As</font> Range

<font color="blue">Set</font> source_ = Sheets(<font color="darkblue"><b>2</b></font>)
<font color="blue">Set</font> target_ = Sheets(<font color="darkblue"><b>1</b></font>)
<font color="blue">Set</font> tocopy_ = Sheets(<font color="darkblue"><b>3</b></font>)

<font color="blue">For</font> <font color="blue">Each</font> cc <font color="blue">In</font> source_.UsedRange.Columns(<font color="darkblue"><b>2</b></font>).Cells
	temp = WorksheetFunction.Trim(cc.Value)
	temph = WorksheetFunction.Trim(source_.Cells(cc.Row, <font color="darkblue"><b>5</b></font>).Value)

    <font color="blue">If</font> temp <> <font color="teal">""</font> <font color="blue">Then</font>
        <font color="blue">Set</font> x = target_.Columns(<font color="darkblue"><b>2</b></font>).Find(temp, LookIn:=xlValues, lookat:=xlPart, MatchCase:=True)
        <font color="blue">If</font> <font color="blue">Not</font> x <font color="blue">Is</font> <font color="blue">Nothing</font> <font color="blue">Then</font>
            iFirstAddress = x.Address
            <font color="blue">Do</font>
                <font color="blue">Set</font> x = target_.Columns(<font color="darkblue"><b>2</b></font>).FindNext(x)
                <font color="blue">If</font> WorksheetFunction.Trim(target_.Cells(x.Row, <font color="darkblue"><b>3</b></font>).Value) <> temph <font color="blue">Then</font>
                    <font color="blue">Set</font> blank_cell = tocopy_.Cells(tocopy_.Range(<font color="teal">"a"</font> & Rows.Count).<font color="blue">End</font>(xlUp).Row + <font color="darkblue"><b>1</b></font>, <font color="darkblue"><b>1</b></font>)
                    source_.Cells(cc.Row, <font color="darkblue"><b>2</b></font>).Copy blank_cell
                    blank_cell.Offset(<font color="darkblue"><b>0</b></font>, <font color="darkblue"><b>1</b></font>).Value = WorksheetFunction.Trim(target_.Cells(x.Row, <font color="darkblue"><b>3</b></font>).Value)
                    blank_cell.Offset(<font color="darkblue"><b>0</b></font>, <font color="darkblue"><b>2</b></font>).Value = temph
                <font color="blue">End</font> <font color="blue">If</font>
            <font color="blue">Loop</font> <font color="blue">While</font> <font color="blue">Not</font> x <font color="blue">Is</font> <font color="blue">Nothing</font> <font color="blue">And</font> x.Address <> iFirstAddress
        <font color="blue">Else</font>
                <font color="blue">Set</font> blank_cell = tocopy_.Cells(tocopy_.Range(<font color="teal">"a"</font> & Rows.Count).<font color="blue">End</font>(xlUp).Row + <font color="darkblue"><b>1</b></font>, <font color="darkblue"><b>1</b></font>)
                source_.Cells(cc.Row, <font color="darkblue"><b>2</b></font>).Copy blank_cell
                blank_cell.Offset(<font color="darkblue"><b>0</b></font>, <font color="darkblue"><b>3</b></font>).Value = <font color="teal">"Not Exist In Sheets1 Column2!"</font>
        <font color="blue">End</font> <font color="blue">If</font>
    <font color="blue">End</font> <font color="blue">If</font>
<font color="blue">Next</font>

<font color="blue">End</font> <font color="blue">Sub</font>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5
Похожие ответы