Board logo

標題: [發問] 請教如何做特殊排列 [打印本頁]

作者: ericpeja    時間: 2019-11-11 09:35     標題: 請教如何做特殊排列

本帖最後由 ericpeja 於 2019-11-11 09:37 編輯

請問小弟有兩工作表分別為
SHEET1                                                                                                             SHEET2
學生號碼    成績     補考1       補考2       過關                                                學生號碼   1   2   3   4   5  6   7    8   9   10
1                   75                                           是                                                   過關          是 是 是 否  是 是 否  是  否  是   
2                   65                                           是                                                   補考1                       否           是        是
3                   66                                           是                                                   補考2                       否        
4                   35                                           否
4                                45                              否
4                                                56              否
5                   98                                           是
6                   76                                           是
7                   35                                           否
7                              60                                是
8                   77                                           是
9                   49                                           否
9                              69                                是
10                 90                                           是

如附件
請問我該如何用sheet1的條件(不過關須補考1再不過補考2)
讓sheet2的學生號碼的做橫向的排列(直向為是否過關及補考是否通過)
由於初學VBA 想不到較好的方法 故請教版上各位前輩們~感激不盡
作者: hcm19522    時間: 2019-11-11 20:30

{=INDEX(SHEET1!$E:$E,SMALL(IF(SHEET1!$A$2:$A$15=B$1,ROW($2:$15),4^8),ROW(A1)))&""
作者: ericpeja    時間: 2019-11-12 10:09

回復 2# hcm19522
謝謝大大的回復 不過小弟資質愚鈍 執行VBA好像無法使用 可否註解此值的內容 以便小弟方便解讀
作者: hcm19522    時間: 2019-11-12 11:29

回復 3# ericpeja


    http://www.FunP.Net/144379
作者: 准提部林    時間: 2019-11-12 12:00

SHEET2
B2:右拉
=LOOKUP(1,0/(SHEET1!$A$1:$A$199=B$1),SHEET1!$E:$E)  

B3:右拉/下拉
=iferror(IF(LOOKUP(9^9,((INDEX(SHEET1!$C$1:$D$199,,ROW($A1))&"")+1%)/(SHEET1!$A$1:$A$199=B$1))<60,"否","是"),"")
作者: ericpeja    時間: 2019-11-12 17:18

回復 5# 准提部林

非常感謝您的幫忙
但我使用函數後結果為結果與我想要的不太一樣
可能是我敘述的不夠完整
我想把sheet 1的A行直接轉為sheet2的第1列(學生號碼不可重覆1,2,3,4,5,6,7,8,9,10)
補考及格並不代表過關(您給的好像是補考1或補考2有過就算過關)
[attach]31406[/attach]
我附上我欲想修改的狀況
[attach]31407[/attach]
我附上我欲想修改的狀況

Sheet1的A行僅取第一筆學生號碼(不論補考)然後在Sheet2的第2行對比其過關結果
如需補考1(不過關)之學生號碼的第二筆資料對應Sheet2的第3行
最後補考2(不過關)之學生號碼的第三筆資料對應Sheet2的第3行
請問這樣是否還有辦法解呢???
感激不盡
作者: 准提部林    時間: 2019-11-13 09:51

回復 6# ericpeja

B1:右拉
=IFERROR(SMALL(SHEET1!$A:$A,COUNTIF(SHEET1!$A:$A,"<="&N(A1))+1),"")
B2:右拉
=IF(B1="","",VLOOKUP(B1,SHEET1!$A:$E,5,))
B3:右拉/下拉
=iferror(IF(LOOKUP(9^9,((INDEX(SHEET1!$C$1:$D$199,,ROW($A1))&"")+1%)/(SHEET1!$A$1:$A$199=B$1))<60,"否","是"),"")
作者: ericpeja    時間: 2019-11-13 23:02

回復 7# 准提部林

感謝大大~成功了
不知道您可否分享這幾段函數所包含的意義??看起來好複雜的感覺
感謝您~~:)
作者: mlbolerud    時間: 2019-11-30 14:09

試看看下面的解法

Sub test()
i = 2
Do While Sheets("sheet1").Cells(i, 1) <> ""
    Set A = Sheets("sheet1").Cells(i, 1)
    With Sheets("sheet2").Cells(1, 1 + A.Value)
    If A.Offset(0, 1).Value >= 60 Then
     .Value = A.Value
     .Offset(1, 0) = "是"
  
    ElseIf A.Offset(1, 2).Value >= 60 Then
     .Value = A.Value
     .Offset(1, 0) = "否"
     .Offset(2, 0) = "是"
     i = i + 1

    ElseIf A.Offset(2, 3).Value >= 60 Then
     .Value = A.Value
     .Offset(1, 0) = "否"
     .Offset(2, 0) = "否"
     .Offset(3, 0) = "是"
     i = i + 2
                                      
    Else
     .Value = A.Value
     .Offset(1, 0) = "否"
     .Offset(2, 0) = "否"
     .Offset(3, 0) = "否"
     i = i + 2
    End If
    End With
i = i + 1
Loop
End Sub




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)