根据字符串从不同的工作表中获取行
Get row from different sheets based on a string
我有多个 sheet,用于跟踪每个人的抽奖券数量。
主要sheet:
|-----------|------------------|
| Name | # of tickets |
|-----------|------------------|
| Adam | 5 |
|-----------|------------------|
| Michael | 2 |
|-----------|------------------|
| Sara | 4 |
|-----------|------------------|
Sheet 1:
|-----------|------------------|---------------|
| Name | Activity | # of tickets |
|-----------|------------------|---------------|
| Adam | Registration | 2 |
|-----------|------------------|---------------|
| Michael | Registration | 2 |
|-----------|------------------|---------------|
| Sara | Registration | 2 |
|-----------|------------------|---------------|
Sheet 2:
|-----------|------------------|---------------|
| Name | Activity | # of tickets |
|-----------|------------------|---------------|
| Adam | Registration | 2 |
|-----------|------------------|---------------|
| Sara | Registration | 2 |
|-----------|------------------|---------------|
| Adam | Extra ticket | 1 |
|-----------|------------------|---------------|
问题:
如何使 Main Sheet 根据 Sheet 1、Sheet 2...Sheet n 自动更新?
所以基本上 Main Sheet 应该根据 Column "Name" 获取每个 Sheet 的行,然后获取 # of tickets 的值并在 main sheet 中求和。
创建代码块宏vba
Sub GetInfoSheet()
Dim WS_Count As Integer
Dim I As Integer
Dim SumAdam As Integer
Dim SumMichel As Integer
Dim SumSara As Integer
WS_Count = ActiveWorkbook.Worksheets.Count
For I = 2 To WS_Count
strTest = ActiveWorkbook.Worksheets(I).Cells(3, 3)
SumAdam = SumAdam + CInt(strTest)
strTest = ActiveWorkbook.Worksheets(I).Cells(4, 3)
SumMichel = SumMichel + CInt(strTest)
strTest = ActiveWorkbook.Worksheets(I).Cells(5, 3)
SumSara = SumSara + CInt(strTest)
Next I
With ActiveWorkbook.Worksheets(1)
.Cells(3, 3).Value = SumAdam
.Cells(4, 3).Value = SumMichel
.Cells(5, 3).Value = SumSara
End With
End Sub
这样回复你的数据:主要 Sheet 和 2 sheet 数据:
在我的MainSheet中,B1中使用的公式是:
=SUMIF(Sheet1!$A:$A;A1;Sheet1!$C:$C)+SUMIF(Sheet2!$A:$A;A1;Sheet2!$C:$C)
您需要为每个要添加的 sheet 个 SUMIF。
我有多个 sheet,用于跟踪每个人的抽奖券数量。
主要sheet:
|-----------|------------------|
| Name | # of tickets |
|-----------|------------------|
| Adam | 5 |
|-----------|------------------|
| Michael | 2 |
|-----------|------------------|
| Sara | 4 |
|-----------|------------------|
Sheet 1:
|-----------|------------------|---------------|
| Name | Activity | # of tickets |
|-----------|------------------|---------------|
| Adam | Registration | 2 |
|-----------|------------------|---------------|
| Michael | Registration | 2 |
|-----------|------------------|---------------|
| Sara | Registration | 2 |
|-----------|------------------|---------------|
Sheet 2:
|-----------|------------------|---------------|
| Name | Activity | # of tickets |
|-----------|------------------|---------------|
| Adam | Registration | 2 |
|-----------|------------------|---------------|
| Sara | Registration | 2 |
|-----------|------------------|---------------|
| Adam | Extra ticket | 1 |
|-----------|------------------|---------------|
问题: 如何使 Main Sheet 根据 Sheet 1、Sheet 2...Sheet n 自动更新? 所以基本上 Main Sheet 应该根据 Column "Name" 获取每个 Sheet 的行,然后获取 # of tickets 的值并在 main sheet 中求和。
创建代码块宏vba
Sub GetInfoSheet()
Dim WS_Count As Integer
Dim I As Integer
Dim SumAdam As Integer
Dim SumMichel As Integer
Dim SumSara As Integer
WS_Count = ActiveWorkbook.Worksheets.Count
For I = 2 To WS_Count
strTest = ActiveWorkbook.Worksheets(I).Cells(3, 3)
SumAdam = SumAdam + CInt(strTest)
strTest = ActiveWorkbook.Worksheets(I).Cells(4, 3)
SumMichel = SumMichel + CInt(strTest)
strTest = ActiveWorkbook.Worksheets(I).Cells(5, 3)
SumSara = SumSara + CInt(strTest)
Next I
With ActiveWorkbook.Worksheets(1)
.Cells(3, 3).Value = SumAdam
.Cells(4, 3).Value = SumMichel
.Cells(5, 3).Value = SumSara
End With
End Sub
这样回复你的数据:主要 Sheet 和 2 sheet 数据:
在我的MainSheet中,B1中使用的公式是:
=SUMIF(Sheet1!$A:$A;A1;Sheet1!$C:$C)+SUMIF(Sheet2!$A:$A;A1;Sheet2!$C:$C)
您需要为每个要添加的 sheet 个 SUMIF。