Получение значений из другого листа в Excel с использованием VBA - PullRequest
29 голосов
/ 10 ноября 2010

Здравствуйте, я новичок в Excel, и у меня возникли проблемы с получением значений из других листов.

У меня есть несколько значений в excel (sheet2), например:

    A  B  C  D
    -  -  -  -  
1 | 2  5  9  12
2 | 5  8  4  5
3 | 3  1  2  6

Я работаю с этими значениями в sheet2 и хочу получить результат в sheet1.Когда я использую свой код на листе 2, я получаю правильный ответ, но когда я пытаюсь использовать его на другом листе, я получаю результат значений, соответствующих текущим ячейкам листа, а не листу 2.

  • Я хочучтобы получить сумму каждого столбца в строке 4. и мне удается это сделать, но я могу использовать ее только в sheet2.

Я использую «With Application.WorksheetFunction», и я хочу изменить это наполучить значения из листа 2.

Не могли бы вы помочь мне с этим и как установить лист2 в качестве листа активации.

Надеюсь, мой вопрос ясен.

Спасибо

Ответы [ 5 ]

44 голосов
/ 10 ноября 2010

Попробуйте

 ThisWorkbook.Sheets("name of sheet 2").Range("A1")

для доступа к диапазону на листе 2 независимо от того, где находится ваш код или какой лист активен в данный момент. Чтобы сделать лист 2 активным, попробуйте

 ThisWorkbook.Sheets("name of sheet 2").Activate

Если вам просто нужна сумма строки на другом листе, вам вообще не нужно использовать VBA. Введите формулу, подобную этой, в листе 1:

=SUM([Name-Of-Sheet2]!A1:D1)
17 голосов
/ 10 ноября 2010

Это будет (для вас очень конкретный пример)

ActiveWorkbook.worksheets("Sheet2").cells(aRow,aCol).Value=someval

ИЛИ

someVal=ActiveWorkbook.worksheets("Sheet2").cells(aRow,aCol).Value

Так что получите F1 клик и прочитайте о коллекции рабочих листов,содержит объекты Worksheet, которые, в свою очередь, имеют коллекцию Cells, содержащую объекты Cell ...

2 голосов
/ 16 июля 2016
Sub TEST()
Dim value1 As String
Dim value2 As String
value1 = ThisWorkbook.Sheets(1).Range("A1").Value 'value from sheet1
value2 = ThisWorkbook.Sheets(2).Range("A1").Value 'value from sheet2
If value1 = value2 Then ThisWorkbook.Sheets(2).Range("L1").Value = value1 'or 2
End Sub

При этом будут сравниваться значения ячеек двух листов, и, если они совпадают, поместите значение на лист 2 в столбец L.

0 голосов
/ 20 июня 2017

Попробуйте команду активации листа, прежде чем вам понадобятся данные из листа:

objWorkbook.WorkSheets(1).Activate
objWorkbook.WorkSheets(2).Activate
0 голосов
/ 11 мая 2015
SomeVal=ActiveWorkbook.worksheets("Sheet2").cells(aRow,aCol).Value

не работает. Однако следующий код работал только для меня.

SomeVal = ThisWorkbook.Sheets(2).cells(aRow,aCol).Value
...