通过筛选另一个工作表创建 Excel 个工作表
Create Excel worksheet by filtering another worksheet
我有一个包含以下值的工作表
我想,如果可能的话,使用方程式,在另一个工作表中,根据它们是低风险、中等风险还是高风险,将这些值重新排列成三列,就像这样
不要注意颜色和边框,我可以稍后添加(或使用条件格式)。
问题: 能否提供一个最小工作示例 (MWE) 或用于将一个 table 并排转换为三个 [=23] 的方程式=]s.
我会用 VBA 来解决这个问题:
Sub Sortdata()
Dim wsRisk As Worksheet, wsThisSheet As Worksheet
Dim colHigh As Long, colMed As Long, ColLow As Long
colHigh = 3
colMed = 3
ColLow = 3
Set wsThisSheet = ActiveSheet
With ThisWorkbook
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Risk"
End With
Set wsRisk = Worksheets("Risk")
wsRisk.Range("A1").Value = "Risk of Responsibility"
wsRisk.Range("A2").Value = "High Risk"
wsRisk.Range("C2").Value = "Medium Risk"
wsRisk.Range("E2").Value = "Low Risk"
lastrow = wsThisSheet.Cells(Rows.Count, "B").End(xlUp).Row
For x = 2 To lastrow
If wsThisSheet.Cells(x, 4).Value = "High" Then
wsRisk.Range("A" & colHigh & ":B" & colHigh).Value = wsThisSheet.Range("B" & x & ":C" & x).Value
colHigh = colHigh + 1
ElseIf wsThisSheet.Cells(x, 4).Value = "Med" Then
wsRisk.Range("C" & colMed & ":D" & colMed).Value = wsThisSheet.Range("B" & x & ":C" & x).Value
colMed = colMed + 1
ElseIf wsThisSheet.Cells(x, 4).Value = "Low" Then
wsRisk.Range("E" & ColLow & ":F" & ColLow).Value = wsThisSheet.Range("B" & x & ":C" & x).Value
ColLow = ColLow + 1
End If
Next x
End Sub
我有一个包含以下值的工作表
不要注意颜色和边框,我可以稍后添加(或使用条件格式)。
问题: 能否提供一个最小工作示例 (MWE) 或用于将一个 table 并排转换为三个 [=23] 的方程式=]s.
我会用 VBA 来解决这个问题:
Sub Sortdata()
Dim wsRisk As Worksheet, wsThisSheet As Worksheet
Dim colHigh As Long, colMed As Long, ColLow As Long
colHigh = 3
colMed = 3
ColLow = 3
Set wsThisSheet = ActiveSheet
With ThisWorkbook
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Risk"
End With
Set wsRisk = Worksheets("Risk")
wsRisk.Range("A1").Value = "Risk of Responsibility"
wsRisk.Range("A2").Value = "High Risk"
wsRisk.Range("C2").Value = "Medium Risk"
wsRisk.Range("E2").Value = "Low Risk"
lastrow = wsThisSheet.Cells(Rows.Count, "B").End(xlUp).Row
For x = 2 To lastrow
If wsThisSheet.Cells(x, 4).Value = "High" Then
wsRisk.Range("A" & colHigh & ":B" & colHigh).Value = wsThisSheet.Range("B" & x & ":C" & x).Value
colHigh = colHigh + 1
ElseIf wsThisSheet.Cells(x, 4).Value = "Med" Then
wsRisk.Range("C" & colMed & ":D" & colMed).Value = wsThisSheet.Range("B" & x & ":C" & x).Value
colMed = colMed + 1
ElseIf wsThisSheet.Cells(x, 4).Value = "Low" Then
wsRisk.Range("E" & ColLow & ":F" & ColLow).Value = wsThisSheet.Range("B" & x & ":C" & x).Value
ColLow = ColLow + 1
End If
Next x
End Sub