Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过筛选其他工作表创建Excel工作表_Excel_Excel 2016 - Fatal编程技术网

通过筛选其他工作表创建Excel工作表

通过筛选其他工作表创建Excel工作表,excel,excel-2016,Excel,Excel 2016,我有一个具有以下值的工作表 我想,如果可能的话,使用一个等式,在另一个工作表中,根据这些值是低风险、中风险还是高风险,将它们重新排列成三列,就像这样 不用注意颜色和边框,我可以稍后添加或使用条件格式 问题:是否有人可以提供一个最小的工作示例MWE或用于将一张表转换为三张并排表的方程式。我将使用VBA解决此问题: Sub Sortdata() Dim wsRisk As Worksheet, wsThisSheet As Worksheet Dim colHigh As Long, colMed

我有一个具有以下值的工作表 我想,如果可能的话,使用一个等式,在另一个工作表中,根据这些值是低风险、中风险还是高风险,将它们重新排列成三列,就像这样

不用注意颜色和边框,我可以稍后添加或使用条件格式


问题:是否有人可以提供一个最小的工作示例MWE或用于将一张表转换为三张并排表的方程式。

我将使用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