it-roy-ru.com

Получение значений из другого листа в Excel с использованием VBA

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

У меня есть некоторые значения в Excel (лист2), например:

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

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

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

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

Можете ли вы помочь мне с этим и как установить sheet2 в качестве листа активации.

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

Спасибо

29
Apollon1954

Пытаться

 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)
42
Doc Brown

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

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

OR

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

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

17
jpinto3912
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.

2
James Heffer

SomeVal = ActiveWorkbook.worksheets ( "Лист2"). Клетки (Arow, AcOl) .Value

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

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

0
RanonKahn

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

objWorkbook.WorkSheets(1).Activate
objWorkbook.WorkSheets(2).Activate
0
Mike