99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

VBA實戰(zhàn)指南:玩轉(zhuǎn)Excel教務(wù)掛科統(tǒng)計與自動化報表生成

VBA實戰(zhàn)指南:玩轉(zhuǎn)Excel教務(wù)掛科統(tǒng)計與自動化報表生成 1. 項目背景為什么教務(wù)數(shù)據(jù)要用VBA來處理高校教務(wù)管理里掛科數(shù)據(jù)統(tǒng)計是非常高頻的一項工作。學期末考試結(jié)束各科成績出來教務(wù)員或者輔導員需要回答一系列問題每個班掛了幾科哪個科目掛科率最高哪些學生掛科超過三門需要預(yù)警重修名單怎么生成這些問題看起來簡單但當學生數(shù)量上千、科目幾十門、數(shù)據(jù)分散在多個Excel文件里的時候手工處理就變得極其痛苦。我第一次接到這個需求是在某高校期末階段。對方拿來的原始數(shù)據(jù)是一張全校成績總表大概四千多行每行是一個學生的某一門課程成績字段包括學號、姓名、班級、課程名稱、學分、成績。需求也很直接掛科名單、掛科率統(tǒng)計、分數(shù)段分布、以及預(yù)警名單掛科超過兩門的要單獨列出來。說實話這些需求用Excel自帶的數(shù)據(jù)透視表和篩選功能也能做一部分但涉及到多條判定規(guī)則、跨科目統(tǒng)計、批量格式化和生成多個報表還是VBA更合適。寫這篇博文就是把這套處理掛科數(shù)據(jù)的完整思路和代碼實戰(zhàn)過程拆開來講。從數(shù)據(jù)清洗、掛科判定、按科目統(tǒng)計、按學生聚合、生成預(yù)警名單到最后的報表自動排版每一步都給出可以直接復用的方案。適合輔導員、教務(wù)員、教學秘書以及任何處理過這類考核數(shù)據(jù)的辦公人員參考。如果你只會Excel的基礎(chǔ)操作這篇文章會告訴你VBA處理批量數(shù)據(jù)的基本套路如果你已經(jīng)有點VBA基礎(chǔ)也可以從中找到一些邊界情況處理和代碼組織的方法。2. 項目整體設(shè)計與思路拆解2.1 先搞清楚數(shù)據(jù)長什么樣拿到數(shù)據(jù)的第一步不是寫代碼而是觀察數(shù)據(jù)。我用的是某高校模擬項目X的成績總表字段和真實教務(wù)系統(tǒng)導出的格式基本一致。以下是原始數(shù)據(jù)的一個簡化樣例學號姓名班級課程名稱學分成績20230101張某計科2301高等數(shù)學55820230101張某計科2301大學英語37120230102李某計科2301高等數(shù)學56220230102李某計科2301線性代數(shù)34320230102李某計科2301大學英語355仔細觀察有幾個關(guān)鍵點決定了后續(xù)代碼怎么寫一行為一個學生的一門課成績所以一個學生占用多行數(shù)據(jù)。按學生聚合統(tǒng)計掛科門數(shù)就不能用簡單的篩選而是需要按學號分組。成績字段的格式可能不統(tǒng)一有的單元格是文本類型有的看起來是數(shù)字但其實是缺考或緩考字樣。這種臟數(shù)據(jù)必須先清洗。掛科的判定線和課程學分有關(guān)不同學??赡苡兴煌S械膶W校60分及格有的課程按五級制優(yōu)、良、中、及格、不及格這些都要在寫代碼前問清楚。2.2 方案選型為什么不用公式和透視表在處理這類數(shù)據(jù)時很多人第一反應(yīng)是用COUNTIFS加IF嵌套不就行了。確實如果只需要統(tǒng)計個掛科人數(shù)公式完全可以勝任。但這套需求里有一個場景是公式不太好處理的判斷每個學生掛科是否超過兩門并把超過兩門的學生自動歸入預(yù)警名單。這樣做是可行的但操作相對繁瑣需要在輔助列里拉公式再對結(jié)果做二次篩選。根本的問題在于公式方案是靜態(tài)的。數(shù)據(jù)源一旦更新比如補考成績錄入、緩考學生決定參加考試所有統(tǒng)計結(jié)果都得跟著改輔助列里的公式范圍需要重新調(diào)整生成的報表還得手工重建。VBA方案是動態(tài)的原始數(shù)據(jù)放在Sheet1運行一次宏自動在Sheet2生成掛科名單Sheet3生成科目掛科率統(tǒng)計Sheet4生成預(yù)警名單。下次數(shù)據(jù)更新了再運行一次就行所有流程完全自動化。還有一個原因是邏輯可維護性。把代碼讀一遍就知道成績小于60且不為空算掛科缺考標記為-1也按掛科處理掛科超過2門預(yù)警這些規(guī)則寫在哪里。對后接手的人來說理解一套VBA代碼并修改規(guī)則比在一大堆嵌套公式里翻找要容易得多。2.3 整體處理流程梳理整個方案分成五個階段數(shù)據(jù)清洗、基本校驗、掛科判定與統(tǒng)計、學生維度聚合、報表生成。每個階段相對獨立便于單獨測試和調(diào)試。第一階段規(guī)范成績字段——把文本數(shù)字轉(zhuǎn)成數(shù)值、識別特殊標記、剔除無效行。第二階段檢查有沒有缺失關(guān)鍵字段的行比如學號為空的學生記錄直接跳過。第三階段遍歷所有成績記錄按課程名稱統(tǒng)計考試人數(shù)、掛科人數(shù)、掛科率同時輸出每條掛科記錄到名單表。第四階段再遍歷一次或者復用前面收集的數(shù)據(jù)按學號匯總每個學生的掛科門數(shù)生成預(yù)警名單。第五階段用VBA控制格式設(shè)置邊框、列寬、單元格顏色把掛科率高和預(yù)警級別高的信息突出顯示。3. 核心邏輯與關(guān)鍵代碼實現(xiàn)3.1 字典對象跨行聚合的利器做學生維度的掛科統(tǒng)計時最常用的技巧是使用VBA的Dictionary字典對象。它類似于哈希表可以按學號存儲一個學生的累計掛科門數(shù)。遍歷成績記錄時每遇到一條掛科記錄就在字典里把對應(yīng)學號的計數(shù)加1。最后把需要預(yù)警的學生計數(shù)值大于2輸出到名單表。Dim dict As Object Set dict CreateObject(Scripting.Dictionary) 遍歷成績數(shù)據(jù)統(tǒng)計每個學生掛科數(shù)量 For i 2 To lastRow scoreVal Trim(CStr(ws.Cells(i, 6).Value)) 成績列 stuID Trim(CStr(ws.Cells(i, 1).Value)) 學號列 判斷是否掛科成績?yōu)閿?shù)字且小于60或包含缺考等標記 If IsNumeric(scoreVal) Then If CDbl(scoreVal) 60 Then If dict.Exists(stuID) Then dict(stuID) dict(stuID) 1 Else dict(stuID) 1 End If End If ElseIf InStr(scoreVal, 缺考) 0 Or InStr(scoreVal, 緩考) 0 Then If dict.Exists(stuID) Then dict(stuID) dict(stuID) 1 Else dict(stuID) 1 End If End If Next i這段代碼并不復雜卻解決了最關(guān)鍵的按學生聚合問題。成績總表里同一個學生出現(xiàn)多行如果不想辦法聚合就沒法判斷掛科超過兩門。字典在這種場景下的處理思路值得反復參考。建議在處理學生數(shù)據(jù)時先想清楚需要按哪個維度聚合這個維度是否適合作為字典的Key。3.2 成績數(shù)據(jù)的邊界情況處理成績數(shù)據(jù)遠沒有想象的那么干凈這是我在實際處理中遇到最多坑的地方。真實數(shù)據(jù)里常見的情況包括成績單元格顯示為缺考或緩考。這類情況通常要按掛科處理因為學生沒有成績。成績?yōu)榭盏膯卧?。不能簡單判斷為掛科需要先和對方確認空值含義。在我的模擬項目X數(shù)據(jù)里空值表示該學生本學期沒有選修這門課屬于無效記錄應(yīng)當跳過。成績是文本格式的數(shù)字比如單元格左上角有個綠色小三角。直接比較會導致類型不匹配報錯需要先用IsNumeric判斷。成績包含具體分值但帶備注比如55作弊。這種數(shù)據(jù)格式不統(tǒng)一要么在數(shù)據(jù)源頭規(guī)范要么在代碼里做截取處理。我的建議是在VBA代碼里先做一個數(shù)據(jù)清洗模塊統(tǒng)一處理這些情況。這樣主邏輯里的成績判斷就不用到處處理異常代碼也更清晰。寫一個獨立函數(shù)來判斷這條記錄是否為掛科把所有邊界情況封裝進去Function IsFail(scoreCell As Range) As Boolean Dim raw As String raw Trim(CStr(scoreCell.Value)) 空值不算掛科視為無效記錄 If raw Then IsFail False Exit Function End If 缺考或緩考視為掛科 If InStr(raw, 缺考) 0 Or InStr(raw, 緩考) 0 Then IsFail True Exit Function End If 純數(shù)字小于60算掛科 If IsNumeric(raw) Then IsFail (CDbl(raw) 60) Exit Function End If 其他文本標記按非掛科處理 IsFail False End Function注意掛科判定線60分是我在模擬項目X中使用的規(guī)則。實際部署時這個臨界值應(yīng)該定義成常量或者放在配置單元格里方便不同院系按各自規(guī)則調(diào)整。3.3 按科目的掛科率統(tǒng)計科目維度的統(tǒng)計相對直接遍歷所有成績記錄按課程名稱分組記錄兩個數(shù)字——考試人數(shù)和掛科人數(shù)。考試人數(shù)指該課程有效成績記錄數(shù)排除空值掛科人數(shù)是其中判定為掛科的記錄數(shù)。掛科率就是兩者之比。這個統(tǒng)計邏輯用字典也能實現(xiàn)但字典存的值是數(shù)組會有些別扭。更穩(wěn)妥的方式是直接在內(nèi)存里維護兩個字典一個存考試人數(shù)一個存掛科人數(shù)。遍歷結(jié)束后再合并輸出。或者用更自然的方式——先動態(tài)收集所有課程名稱到字典A中第二次遍歷時按課程統(tǒng)計。我在實踐里更喜歡用Collection或字典來維護課程列表因為課程名稱不一定在原始數(shù)據(jù)里有現(xiàn)成的枚舉清單。你無法提前知道全校開了多少門課動態(tài)收集才是正解。以下是用字典統(tǒng)計科目掛科率的核心邏輯Dim examCount As Object, failCount As Object Set examCount CreateObject(Scripting.Dictionary) Set failCount CreateObject(Scripting.Dictionary) For i 2 To lastRow courseName Trim(CStr(ws.Cells(i, 4).Value)) If courseName Then GoTo NextRow 有效成績記錄計入考試人數(shù) If examCount.Exists(courseName) Then examCount(courseName) examCount(courseName) 1 Else examCount(courseName) 1 End If 掛科記錄計入掛科人數(shù) If IsFail(ws.Cells(i, 6)) Then If failCount.Exists(courseName) Then failCount(courseName) failCount(courseName) 1 Else failCount(courseName) 1 End If End If NextRow: Next i統(tǒng)計完成后遍歷examCount字典把課程名稱、考試人數(shù)、掛科人數(shù)、掛科率逐行寫入輸出表。掛科率保留一位小數(shù)或百分比形式同時用條件格式把掛科率超過20%的科目標紅方便快速定位問題課程。3.4 多字段核心判斷組合掛科數(shù)據(jù)處理中有一個容易忽略的點同一個學生某一門課掛科了但在另一門課里是緩考緩考雖然也算掛科但定義略有不同。比如學??赡苡幸?guī)則緩考學生可以直接參加補考不占用掛科名額也不會進入學業(yè)預(yù)警名單。這種細微差別落到代碼里就是一個布爾變量的調(diào)整。我的經(jīng)驗是把是否掛科和是否計入預(yù)警拆成兩個獨立的判斷函數(shù)。掛科名單里包含缺考和緩考但預(yù)警名單只考慮成績60的真實不及格。這樣代碼雖然多了一個函數(shù)但語義清晰也方便應(yīng)對不同院系的不同規(guī)則。Function IsWarningFail(scoreCell As Range) As Boolean Dim raw As String raw Trim(CStr(scoreCell.Value)) 只有純數(shù)字且小于60才計入預(yù)警 If IsNumeric(raw) Then IsWarningFail (CDbl(raw) 60) Else IsWarningFail False End If End Function這種把規(guī)則拆解到函數(shù)級別的寫法是我在多次處理績效數(shù)據(jù)的過程中逐漸養(yǎng)成的習慣。一次性把所有邏輯寫在一個事件處理程序里看起來省事但后期要調(diào)整一個規(guī)則時改動影響范圍會比較大容易顧此失彼。4. 完整實操流程與報表生成4.1 環(huán)境準備與數(shù)據(jù)約定實際操作前先約定輸入輸出格式。我用一個獨立的工作簿來處理這類數(shù)據(jù)文件里通常包含四個工作表原始數(shù)據(jù)、掛科名單、科目統(tǒng)計、預(yù)警名單。輸入數(shù)據(jù)固定在原始數(shù)據(jù)表中運行宏后會清空其他三個表并重新填充內(nèi)容。在寫代碼前先確認幾個約定成績在原始數(shù)據(jù)表的第6列F列表頭行是第1行。學號在第1列姓名第2列班級第3列課程名稱第4列學分第5列。所有列的數(shù)據(jù)都不允許包含合并單元格如果原始導出文件里有合并單元格先用Excel取消合并并填充。提示在模擬項目X的實際操作中出現(xiàn)過原始數(shù)據(jù)用Excel公式生成導致部分單元格值為0但公式未計算的情況。建議拿到數(shù)據(jù)后先做一次粘貼為值處理再進入VBA流程。4.2 主流程代碼結(jié)構(gòu)整個宏的主體結(jié)構(gòu)如下包含了數(shù)據(jù)清洗、校驗、統(tǒng)計、輸出四個環(huán)節(jié)并結(jié)合輸入標題VBA實戰(zhàn)案例處理掛科數(shù)據(jù)的全部需求點。該主過程采用模塊化的設(shè)計方便按需裁剪或調(diào)試。Sub ProcessFailData() Dim wsData As Worksheet, wsFail As Worksheet, wsStat As Worksheet, wsWarn As Worksheet Set wsData ThisWorkbook.Sheets(原始數(shù)據(jù)) Set wsFail ThisWorkbook.Sheets(掛科名單) Set wsStat ThisWorkbook.Sheets(科目統(tǒng)計) Set wsWarn ThisWorkbook.Sheets(預(yù)警名單) Dim lastRow As Long lastRow wsData.Cells(wsData.Rows.Count, 1).End(xlUp).Row If lastRow 2 Then MsgBox 原始數(shù)據(jù)為空請檢查數(shù)據(jù)表。 Exit Sub End If 清空輸出表舊數(shù)據(jù)保留表頭 ClearOutputSheets wsFail, wsStat, wsWarn 第一階段遍歷并過濾寫入掛科名單 Dim i As Long Dim failRow As Long, statRow As Long, warnRow As Long failRow 2 statRow 2 warnRow 2 Dim dictStu As Object, dictExam As Object, dictFail As Object Set dictStu CreateObject(Scripting.Dictionary) Set dictExam CreateObject(Scripting.Dictionary) Set dictFail CreateObject(Scripting.Dictionary) For i 2 To lastRow 跳過無效記錄學號為空或姓名為空 Dim stuID As String, stuName As String stuID Trim(CStr(wsData.Cells(i, 1).Value)) stuName Trim(CStr(wsData.Cells(i, 2).Value)) If stuID Or stuName Then GoTo ContinueLoop Dim courseName As String, scoreCell As Range courseName Trim(CStr(wsData.Cells(i, 4).Value)) Set scoreCell wsData.Cells(i, 6) 科目考試人數(shù)統(tǒng)計 If examCountExist(dictExam, courseName) Then dictExam(courseName) dictExam(courseName) 1 Else dictExam(courseName) 1 End If 判斷掛科寫入掛科名單表 If IsFail(scoreCell) Then 寫入掛科名單 wsFail.Cells(failRow, 1).Value stuID wsFail.Cells(failRow, 2).Value stuName wsFail.Cells(failRow, 3).Value wsData.Cells(i, 3).Value wsFail.Cells(failRow, 4).Value courseName wsFail.Cells(failRow, 5).Value wsData.Cells(i, 5).Value wsFail.Cells(failRow, 6).Value scoreCell.Value failRow failRow 1 科目掛科人數(shù)統(tǒng)計 If failCountExist(dictFail, courseName) Then dictFail(courseName) dictFail(courseName) 1 Else dictFail(courseName) 1 End If End If 按學生聚合預(yù)警計數(shù)僅真實不及格 If IsWarningFail(scoreCell) Then If dictStu.Exists(stuID) Then dictStu(stuID) dictStu(stuID) 1 Else dictStu(stuID) 1 End If End If ContinueLoop: Next i 輸出科目統(tǒng)計 Dim key As Variant For Each key In dictExam.Keys wsStat.Cells(statRow, 1).Value key wsStat.Cells(statRow, 2).Value dictExam(key) If dictFail.Exists(key) Then wsStat.Cells(statRow, 3).Value dictFail(key) wsStat.Cells(statRow, 4).Value Format(dictFail(key) / dictExam(key), 0.0%) Else wsStat.Cells(statRow, 3).Value 0 wsStat.Cells(statRow, 4).Value 0.0% End If statRow statRow 1 Next key 輸出預(yù)警名單 Dim stuIDKey As Variant For Each stuIDKey In dictStu.Keys If dictStu(stuIDKey) 2 Then wsWarn.Cells(warnRow, 1).Value stuIDKey wsWarn.Cells(warnRow, 2).Value GetStudentName(stuIDKey, wsData, lastRow) wsWarn.Cells(warnRow, 3).Value dictStu(stuIDKey) Dim stuClass As String stuClass GetStudentClass(stuIDKey, wsData, lastRow) wsWarn.Cells(warnRow, 4).Value stuClass warnRow warnRow 1 End If Next stuIDKey 格式化輸出表格 FormatOutputSheets wsFail, wsStat, wsWarn MsgBox 處理完成掛科名單 (failRow - 2) 條科目 (statRow - 2) 門預(yù)警 (warnRow - 2) 人。 End Sub寫這段代碼時有一個反復權(quán)衡的點預(yù)警名單里需要補充學生的班級信息。若在遍歷成績記錄時把學號、姓名、班級對應(yīng)關(guān)系存入字典內(nèi)存開銷會明顯增加但訪問速度更快。我在模擬項目X里選擇了單獨寫一個GetStudentName和GetStudentClass函數(shù)每次按需在原始數(shù)據(jù)表里查找。學生人數(shù)在兩千以內(nèi)時速度尚可如果數(shù)據(jù)量超過一萬行建議換成字典緩存方式。4.3 輔助函數(shù)實現(xiàn)上面主流程中用到了一些輔助函數(shù)這里一并列出來。重點看一下從字典中判斷鍵是否存在的寫法因為這幾段代碼在不同版本的Office里兼容性有細微差別Function examCountExist(dict As Object, key As String) As Boolean On Error Resume Next examCountExist Not IsError(dict(key)) Err.Clear End Function Function failCountExist(dict As Object, key As String) As Boolean On Error Resume Next failCountExist Not IsError(dict(key)) Err.Clear End Function Function GetStudentName(stuID As String, wsData As Worksheet, lastRow As Long) As String Dim i As Long For i 2 To lastRow If Trim(CStr(wsData.Cells(i, 1).Value)) stuID Then GetStudentName wsData.Cells(i, 2).Value Exit Function End If Next i End Function Function GetStudentClass(stuID As String, wsData As Worksheet, lastRow As Long) As String Dim i As Long For i 2 To lastRow If Trim(CStr(wsData.Cells(i, 1).Value)) stuID Then GetStudentClass wsData.Cells(i, 3).Value Exit Function End If Next i End Function補充說明判斷字典中是否存在某個鍵還有一種更標準的寫法是使用字典的Exists方法。上面之所以用錯誤捕獲方式是因為在部分老版本兼容場景下直接調(diào)用Exists對中文鍵的支持有一些量化差異。但如果你用的Office版本較新2016及以上直接用dict.Exists(key)更穩(wěn)妥代碼也更短。實際部署時建議優(yōu)先用Exists方法If Not dictExam.Exists(courseName) Then dictExam.Add courseName, 1 Else dictExam(courseName) dictExam(courseName) 1 End If4.4 報表格式化技巧數(shù)據(jù)統(tǒng)計完成后報表的呈現(xiàn)直接影響使用者閱讀效率。以下這段是格式化輸出的實現(xiàn)重點在于用單元格邊框和顏色把信息分層Sub FormatOutputSheets(wsFail As Worksheet, wsStat As Worksheet, wsWarn As Worksheet) 設(shè)置統(tǒng)一表頭樣式 Dim headerRng As Range Set headerRng wsFail.Range(A1:F1) headerRng.Font.Bold True headerRng.Interior.Color RGB(0, 102, 204) headerRng.Font.Color RGB(255, 255, 255) 掛科名單邊框 Dim lastFailRow As Long lastFailRow wsFail.Cells(wsFail.Rows.Count, 1).End(xlUp).Row If lastFailRow 2 Then wsFail.Range(A2:F lastFailRow).Borders.LineStyle xlContinuous wsFail.Range(A2:F lastFailRow).Borders.Weight xlThin End If 科目統(tǒng)計表掛科率超過20%的標記為紅色 Dim lastStatRow As Long lastStatRow wsStat.Cells(wsStat.Rows.Count, 1).End(xlUp).Row For i 2 To lastStatRow Dim rateVal As Double rateVal 0 If IsNumeric(wsStat.Cells(i, 4).Value) Then rateVal CDbl(wsStat.Cells(i, 4).Value) End If If rateVal 0.2 Then wsStat.Cells(i, 4).Font.Color RGB(192, 0, 0) wsStat.Cells(i, 4).Font.Bold True End If Next i 自動調(diào)整列寬 wsFail.Columns(A:F).AutoFit wsStat.Columns(A:D).AutoFit wsWarn.Columns(A:D).AutoFit End Sub格式化時有一個經(jīng)常被忽略的細節(jié)AutoFit對中文表頭有時不夠友好特別是當表頭文字較長時自動列寬可能讓單元格顯示不全。遇到這種情況建議單獨給表頭列設(shè)置一個最小寬度值。wsFail.Columns(A).ColumnWidth 12 wsFail.Columns(B).ColumnWidth 10 wsFail.Columns(C).ColumnWidth 144.5 一鍵運行的入口設(shè)計為了讓不熟悉VBA的教務(wù)老師也能方便使用我在工作簿中增加了一個刷新報表按鈕并指定宏為ProcessFailData。這樣使用者只需要在原始數(shù)據(jù)表粘貼新數(shù)據(jù)點擊按鈕所有結(jié)果就自動更新。按鈕的添加方式很簡單開發(fā)工具選項卡中插入表單控件按鈕右鍵指定宏。如果所在的Excel版本不顯示開發(fā)工具選項卡需要在文件-選項-自定義功能區(qū)里勾選開發(fā)工具。這一步驟對于沒有VBA經(jīng)驗的人來說也可能卡住所以我在交接說明里特意寫清楚了路徑。5. 實操過程中遇到的坑與排查技巧5.1 成績列存在隱藏空格導致比較失敗實際處理中碰到過一個很隱晦的問題成績列的值在表面上是58但實際上是58 數(shù)字后面帶空格或者是全角數(shù)字。這些字符在視覺上和半角數(shù)字幾乎一致但CStr轉(zhuǎn)換后參與判斷就會出問題。排查這類問題的最快方式是在VBA代碼里臨時輸出每個成績單元格的ASCII碼。我當時用了一個調(diào)試小工具逐格檢查才發(fā)現(xiàn)空格的問題。解決方案是統(tǒng)一用Trim加一個自定義的清理函數(shù)把全角字符轉(zhuǎn)成半角Function CleanStr(text As Variant) As String Dim result As String result Trim(CStr(text)) 全角數(shù)字轉(zhuǎn)半角 Dim i As Integer For i 1 To Len(result) Dim ch As String ch Mid(result, i, 1) If Asc(ch) 65281 And Asc(ch) 65374 Then ch Chr(Asc(ch) - 65248) End If result Left(result, i - 1) ch Right(result, Len(result) - i) Next i CleanStr result End Function全角轉(zhuǎn)半角這段邏輯雖然簡單但它解決了一類非常典型的數(shù)據(jù)導入問題。教務(wù)系統(tǒng)從網(wǎng)頁端導出的數(shù)據(jù)經(jīng)常混入全角字符不處理的話后續(xù)的學號匹配、姓名匹配都可能靜默失敗。5.2 同一課程名稱表述不一致導致統(tǒng)計被拆開教務(wù)數(shù)據(jù)里同一門課在不同老師那里可能表述不同。比如高等數(shù)學在某些記錄里寫成高數(shù)大學英語有時寫成英語。這種情況下科目維度的統(tǒng)計會被錯誤地拆分成兩行掛科率算出來也會偏小。解決思路有兩個方向一是在數(shù)據(jù)源頭統(tǒng)一課程名稱找教務(wù)系統(tǒng)重新導出或者在Excel里做一次查找替換二是在VBA代碼里維護一個課程名稱映射表。映射表更適合場景固定、課程數(shù)量有限的情況。我當時做了一個Dictionary映射把常見別名歸一化到規(guī)范名稱Dim courseMap As Object Set courseMap CreateObject(Scripting.Dictionary) courseMap.Add 高數(shù), 高等數(shù)學 courseMap.Add 英語, 大學英語 courseMap.Add 線代, 線性代數(shù)在遍歷數(shù)據(jù)時每讀到一個課程名稱先查映射表若有別名就替換成規(guī)范名再參與統(tǒng)計。這樣做還有個額外好處輸出報表里的課程名稱是統(tǒng)一的不會讓看報表的人產(chǎn)生困惑。5.3 數(shù)據(jù)量增大時性能變慢模擬項目X的初期版本四千多行數(shù)據(jù)跑一次宏大約需要十幾秒主要耗在輸出環(huán)節(jié)和GetStudentName/GetStudentClass的反復全表查找上。如果每個預(yù)警學生都要遍歷一次全表性能開銷確實不小。優(yōu)化思路有兩個預(yù)警名單輸出前已經(jīng)知道哪些學號需要查詢姓名和班級可以邊遍歷邊收集學生信息而不是最后再查。也就是在第一次遍歷時把每個學號對應(yīng)的姓名、班級存入字典后面直接取用。關(guān)閉屏幕更新和自動計算。在宏開頭加上Application.ScreenUpdating False和Application.Calculation xlManual宏結(jié)束再恢復。這段小改動通常能帶來三到五倍的性能提升。Sub ProcessFailData() Application.ScreenUpdating False Application.Calculation xlManual ... 原有邏輯 ... Application.Calculation xlCalculationAutomatic Application.ScreenUpdating True End Sub5.4 常見問題速查問題現(xiàn)象可能原因排查與解決辦法運行宏時提示類型不匹配成績列存在文本或全角字符用CleanStr統(tǒng)一轉(zhuǎn)換數(shù)據(jù)或用IsNumeric先做類型判斷科目統(tǒng)計中同一課程出現(xiàn)兩行課程名稱不統(tǒng)一建立課程別名映射表歸一化名稱后再統(tǒng)計預(yù)警名單漏人判斷函數(shù)沒覆蓋缺考標記檢查IsWarningFail邏輯確認缺考與真實不及格的區(qū)分規(guī)則輸出表格沒有邊框/顏色格式化代碼未執(zhí)行檢查FormatOutputSheets是否在主流程末尾被調(diào)用數(shù)據(jù)更新后舊結(jié)果被保留沒有清空輸出表舊數(shù)據(jù)在輸出前調(diào)用ClearOutputSheets先做整表內(nèi)容清除按鈕點擊后沒有反應(yīng)宏被禁用文件另存為啟用宏的工作簿.xlsm并在選項里啟用宏學號前導0丟失Excel自動把學號識別為數(shù)字在原始數(shù)據(jù)里把學號列設(shè)置為文本格式或從教務(wù)系統(tǒng)導出時選文本格式6. 這套方案還可以延伸去做什么處理掛科數(shù)據(jù)只是VBA教務(wù)自動化的一個入門場景。同一套思路——遍歷、字典聚合、條件判定、格式化輸出——遷移到其他場景時基本不需要大改。比如說綜合測評排名。原始數(shù)據(jù)換成多個維度的評分項判定規(guī)則換成加權(quán)得分計算輸出表換成排名表核心代碼框架可以原樣復用。再比如說選課名單核查。把掛科判定換成沖突檢測判斷邏輯可以檢查同一個時間段內(nèi)是否分配了兩門課程。再比如畢業(yè)資格審核按學號聚合各學生已修學分和必修課完成情況輔助判斷是否達到畢業(yè)條件。我個人實際使用這套方案時最大的體會就是永遠不要在原始數(shù)據(jù)表里手工改數(shù)據(jù)。把數(shù)據(jù)清洗、統(tǒng)計、輸出分成三個相對獨立的過程每次有新的數(shù)據(jù)文件就新開一個工作簿把原始數(shù)據(jù)粘貼進去運行宏生成結(jié)果。這樣原始數(shù)據(jù)永遠可追溯結(jié)果也隨時可以重新生成不會出現(xiàn)改了一個單元格結(jié)果忘記刷新統(tǒng)計的尷尬情況。另一個經(jīng)驗是交給別人使用的工具界面友好度比代碼優(yōu)雅度更重要。我在最終版本里特意在預(yù)警名單表頂部加了一行說明文字提示預(yù)警規(guī)則是真實掛科超過兩門避免使用者和教務(wù)辦對預(yù)警口徑有不同的理解。代碼里每一處規(guī)則都寫了注釋防止半年后自己回來看的時候還得重新猜邏輯。如果你剛接觸VBA建議先拿這個案例的數(shù)據(jù)結(jié)構(gòu)——一張成績表、幾個統(tǒng)計需求——練手。把代碼一行行在本地跑通再試著修改掛科線、增加一個統(tǒng)計維度、或者把輸出格式改得更符合自己的偏好。VBA的學習曲線不算平緩但這種接到一個真實需求解決一個具體問題的學習方式比單純看語法書要有效得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷五月在线| 久久久久9| 亚洲综合色色| 超碰99资源站| 婷婷丁香六月| 九九婷婷五月天影视| 国产精品A片在线| 国产激情综合| 色偷偷综合| 综合激情五月四射婷婷| 啪啪视频99| 五月丁香六月婷婷操操操| 99ri久久| 日韩一级网站| 丁香五月WWW| 欧美婷婷五月丁香| 亚洲第一黄网| 狠狠爱婷婷爱| 思思99久久| 四色女婷婷| 五月丁香美女视频| 97色婷婷五月天| 欧美色图片88| 欧美大片免费播放器| 丁香五月天激情四射网| 99操碰| 四月婷婷丁香| 激情综合亚洲色婷婷五月| 91婷婷在线| 丁香六月婷婷激情| 六月丁香婷婷色69| 超碰国产在线| 99自拍视频在线| 97操碰在线97| 五月丁香婷婷激情图片| 97luluse| 亚洲人成网站999综合| 婷婷综合五月| 天天插天天插| 99只有精品| 日韩在线视频网站| 五月停亭六月,六月停亭的英语| 操人妻视频91| 婷婷五月丁香六月综合网| 人人爱天天摸摸天天爱| 亚洲五月天伊人| 九九色精品| 久久99激情| 97超级免费无码| 人妻丰满精品一区二区A片| 色五月天成人| 婷婷五月花| 五月丁香六月婷婷国产视频| 丁香狠狠色婷婷久久无码视频| 国产成人网站在线观看| 色婷婷香蕉| 大香蕉九九| 婷婷玖玖五月天| 婷婷色正月| 97婷婷丁香五月| 五月综合婷婷开心网| 激情久久网 | 思思99热在线| 99热欧| 美女久久婷婷| 激情婷婷99| 亚洲精品第一国产综合亚AV | 丁香婷婷社区| 97 天堂| 狠狠婷婷色| 丁香婷婷五月份| 国产偷人爽久久久久久老妇APP| 亚洲激情另类| 99精品在线| 九九99精品视频在线观看| 狠狠色婷婷7777久| 99视频在线看| 日本综合久久| 五月色欧美| 99热这里只有国产精品| 五月天播播中文字幕| 99.N在线视频| 中国女人做爰A片| 欧美色片中文字幕久久久久| 欧美色色色色色色| 激情久久五月天| 丁香婷婷大香蕉| 亚洲婷婷在线播放十月| 婷婷爱五月天人人爱| 99热日本| 久久久久亚洲AV无码网影音先锋| 操人无码| 亚洲免费av观看| 久久婷婷五| 亚州综合色| 五月丁香成人| 男女久久婷婷五月天| 激情六月婷| 日本五月天激情| 九九热99免费视频| 丁香五月开心七月| 久久综合色五月| 99精品自拍| 激情婷婷内射| 五月天久久婷婷| 99人人干| 五月婷婷精品视频| 91狠狠综合久久| 手机激情网| 99热手机在线精品| 精品一二三区久久AAA片| 五月色情精品| 五月天堂婷婷| 欧美人人草| 国产91视频| 99国产在线精品视频| 熟女国产在线一区二区三区四区| 色狠狠999综合网| 99这里有精品视频视频| 五月婷婷综合在线| 五月天堂婷婷| 99久久五月婷婷| 天天综合网在线| 五月丁香婷婷老司机| 97日本在线| 五月丁香久人妻中文| 五月婷AV| 人人摸人人干| 五月天婷婷三级黄| 91seav| 操操操97| 99r这里只有精品哦| 五月天天爽| 激情综合五月婷婷| 丁香五月婷婷亚洲综合精品| 五月天精品| 全部老头和老太XXXXX| 一区视频网站| 久久九九国产精品怡红院| 97五月天| 99热日韩| 伊人网色婷婷五月天| 色婷六月| 亚洲成片在线观看| 色色色免费视频| 日本人妻A片成人免费看片| 色婷婷玖玖影院| 五月丁香激情婷婷综合字幕| 97人人超| 久热九九| 婷婷伊人网| 成人五月天视频| 亚洲国产精品VA在线看黑人| 日韩综合久久| 91婷婷色| 天堂中文国产| 99久久99久久| 99riAv1国产在线观看| 噜噜噜噜噜色| 色婷婷色丁香色欲av| 久久久er热| www.五月婷婷| 97人人草| 99性爱| 五月婷婷久久久久| 色色狼人综合| 大香蕉手机视频| 色五月激情五月| 国产精品美女| 99婷婷国产最新视频| 五月激情婷婷在线| 五月丁香综合中文| 伊人色综合久久久| 欧美毛卡| www.色九月| 日韩婷久| 91视频五月丁香| 综合久久五月| 日日噜噜夜夜狠狠久久丁香五月| 婷婷色五月天色色| 91黄操| 欧美色97| 欧美六月| 亚洲中文丁香| 狠狠五月婷婷| 日韩AV大全| 色色六月| 狼人狠狠操| 婷婷色六月| 狠狠色婷婷色| 婷婷五月天久久| 99热久草| 91久久婷婷| 99热这里只有精品国产免费| 99热国产免费| 99在线观看视频免费| 激情综合九月| 五月丁香综合激情在线观看| 亚洲婷婷性爱| 成人在线视频一区| 婷婷丁香人妻天久久| 夜夜干 夜夜操| 丁香六月成人| 丁香五月在线观看完整版| 一本到不卡高清DVD| 欧美综合激情五月天| 丁香五月瑟瑟| 日本一级一级一级一级| 思思热再线视频| 97成人在线视频| 丁香五月婷婷日本| 天天做天天爱天天高潮| 99久久欧美| 色一色综合| 亚洲一区二区无码蜜乳av| 婷婷99视频在线| 成人电影丁香六月天| 任你搞在线观看视频| 991精品在线视频| 日本三级中文字幕| 999热视频精品99免费在线| 成人丁香五月天| 一级精品999WWW| 色综合色色| 激情AV综合| 亚洲综合丁香五月天| 色婷婷文字幕| 婷婷五月天丁香花| 色婷婷久久| VA婷婷| 欧美成人AAA片一区国产精品| 十月丁香九月婷婷综合| 午夜婷婷| 久久九九九九| 婷婷五月天成人| 婷婷五月丁香网| 99久久视频| 超碰精品在线| 九九热99熟女| 欧美日本一区二区三区| 91狠狠色丁香婷婷综合久久精品| 久久五月婷综合网| 最近中文字幕大全免费版在线| 婷婷丁香五月亚洲综合网在线视频观看| 97超级碰碰碰| 五月天操逼激情| 99视频网| 色婷婷色情| 在线观看av网站| 欧美顶级少妇做爰HD| 五月婷婷激情| 这里只有精品免费视频在线观看| 五月激情丁香久久综合网| 丁香五月天日韩无码| 五月婷久久| 99热只有精| 香蕉综合网| 丁香五月婷婷香| 99综合| 看片视频在线免费日产在线看| 丁香激惜男女| 超碰久热| 人妻视频在线| 97综合视频在线| 综合激情视频| 久久久999精品| 五月婷婷综合潮喷| 亚洲婷婷婷| 120分钟婬片免费看| www久久久久久| 免费看欧美成人A片无码 | 国产成人精品123区免费视频| 九九热视频在线观看| 丁香五月激情澎湃一区| 五月丁综合在线观看| 久久伊人婷婷| 97操视频| 婷婷伊人视婷婷婷| 亚洲黄3级片网站欧美| 国产视频色色色色色色色| 99热在线精品观看| 亚洲AV网站| 婷婷五月天天爽| www.狠狠操.com| 婷婷五月综合激情| 综合色播| 99re这里只有精品国产99| 色播婷婷五月天| 久久婷婷丁香视频网| 在线综合亚洲欧美65| 国产AV国片偷人妻麻豆| 精品影院| 超碰免费人| 免费黄色片子| 99re欧美精品| 免费在线观看av网站| 九月丁香久久网| 久久综合久色欧美综合狠狠| 亚洲亚洲人成综合网络| 5月丁香综合图区| 国色天香成人网| 日本三级成人秘书精品片| 久久婷婷视频| 超碰v| 成人做爰A片免费看视频| 久机视频这只有精品| 狠狠综合| 丁香五月激情六月欧亚激情综合导航| 69堂午夜视频最新地址| 五月天小说激情| 丁香 婷婷五月| 五月丁香拍拍激情综合| 亚洲中文乱字字幕线在永久| 天天日日夜夜爽。| 停停五月色宗合| 日韩在线视频网站| 六月婷婷综合| 久久综合九色综合97婷婷| 风流少妇A片一区二区蜜桃| 婷婷97狠狠成人网站| 国产AV一区二区三区最新精品| 天天色情站| 精品亚洲国产成人A片在线鸭王| 99在线精品观看99| 婷婷大香焦| 97AV人人插人人操| 色欲丁香| 99ER热精品视频| 无码成人AAAAA毛片AI换脸| 婷婷色五月91啪啪| 97超级碰碰碰| 激情深愛五月視頻| 亚洲色无码| 五月婷婷激情综合av| 丁香婷婷色色| 日韩精品AV一区二区三区| 婷婷色色综合| 久久婷婷久久| 婷婷开心青青草| 婷婷五月丁香久久| 99精品一二三四视频| 久久久精品人妻| 亚洲视频一区| 狼友超碰| 五月天激情中文字幕| 色色色成人网| 开心五月深爱五月| 综合久久六月| 狠狠色丁香| 欧美黄色一级录像| 9操在线| WWW五月婷婷| 九热视频| 久久精品99国产精品日本| 欧美97超碰| 色六月婷婷| 激情综合网,五月| 综合五月婷婷| 色色色综合| www...com黄在线观看| 亲子乱AV一区二区三区下载| 五月婷婷亞洲中文| 99热亚洲| 影音先锋 一区| 久久这里在精品视频| 日夜夜久久| 99热在线观看| 91好好热日本在线| 色婷婷狠狠色| 五月婷婷之综合激情| 影音先锋五月婷婷| 五月婷婷色播视频| 天天弄天天操| 色婷婷五月丁香色| 5月丁香综合网| 国产精品色婷婷99久久精品| 色天使久久综合| 99国产小视频2013| 日韩人妻在线观看| 岛国资源站| 热热久久久久久久久| 婷婷丁香亚洲色综合91| 另类图片五月天激情| 狠狠五月激情在线| 99热在线精品观看| 久久一级片| 日本久久网| 天天插天天插| 日韩精品99久久| 天天综合插插| 午夜色婷婷| 久久精品综合色| 天天爽天天摸| 大地9中文在线观看免费高清| 中文字幕,综合,91| 操操操AV| 香蕉影院色| 婷婷97狠狠成人网站| 午夜不卡久久精品无码免费| 精品AV无码超碰| 亚洲色五月| 99WWW免费视频| 99精品综合在线| 天天做天天双| 五月丁香激情综合| 日本色婷婷五月天成人电影| 丁香六月激情综合| 婷婷色网| 99在线精品视频在线观看| 中文字幕成人影视| 激情五月激情综合网| 五月婷婷丁香综合,亚洲天堂| 插少妇综合网| 欧美成人AAA片一区国产精品| 九九精品网站| 成人丁香五月| 思思99热热热99| www.99日本| 美国不卡视频| A在线观看| 99精品超在线播放| 9久热在线视频精品| 国产免费av在线| www.天天日| www.99热这里精品 | 亚洲成人av中文| 99色啊| 婷婷久草| 五月丁香人人婷婷在线观看| 亚洲岛国电影| 色婷婷亚洲精品天天综| 97久久五月丁香婷婷| 久久婷婷丁香| 亚洲sesesese| 亚洲V国产V欧美V久久久久久| 思思热久在线观看视频| 天堂伊人干| 九九久久视频| 婷婷94s| 久久激情五月婷婷| 久久婷婷色| 色99视频| 五月丁香六月停停| 五月丁香亭亭AV女优| 91综合国免费久入| 日韩一区二区在线播放| AV在线不卡播放| 六月婷欧美丁香综合| 夜夜撸天天日| 日熟女| 丁香五月色情| 成人狠狠成人狠狠成人狠狠成人狠狠 | 日夜夜久久| 日本久久极品| 另类视频综合| 久久这里只有精品无码| 婷婷色一二三区波多野结衣| 色色色色色色色色综合网| 婷婷五月成人色综合| AA片在线观看视频在线播放| 婷婷综合色五月天| 久久婷婷网| a在线观看| 九九热视频免费观看| 亚洲 六月 综合| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 色播播婷婷| 五月丁香综合影院| 欧美99| 天堂草在线观| 久久九区| 天堂在线伊久| 91精品久久久久久| 久热网站| 五月婷婷激情综合在线| ww超碰在线| 五月婷婷激情网| 五月丁香网中文字幕| 99热在线爱| 四色永久成人网站| 色5月丁香婷婷| 色色五月婷| 婷婷五月天激情小说网站| www.com任你艹| 婷婷激情图片| 日本九九网| 六月色婷婷欧美| 亚洲精品成人片在线播| 色一情一乱一乱一区91Av| 丁香五月开心五月激情| 狠狠看狠狠| 色综合狠狠色| 丁香五月开心七月| 婷婷五月天激情小说| 色激情五月| 麻豆科斗777| jiujiujiuwuyuetian| 99ER热精品视频| 欧美日韩123| 好激情在线综合网| 天天操夜夜夜夜爽| 色五月综合激情| 婷婷久久色| 婷婷五月天福利| 欧美色色色色色色色色色色| 亚洲国产va| 91精品国产91久久久久青草| 999九九九久久久99HD| 国产亚洲精品AAAAAAA片| a久久| 五月亭亭综合五码| 丁香五月亭亭六月综合激情网| 五月婷婷婷综合网| 九九综合88| 久久婷婷综合五月| 国自产拍偷拍精品啪啪一区二区 | 婷婷中文字幕| 五夜婷婷| 丁香综合网| 婷婷五月天视频免费在线观看| 激情www.98com| 性色人人爽| 操逼六区| 99久久99视频| 色婷婷久久综合久色综| 婷婷综合日本| 婷婷五月六月| 97干资源在线观看| 狠狠五月天激情| 91精品激情9| 丁XX 成人| 九九热视频思思| 丁香五月第九色| av 一区三区四区| 亚洲操逼网| 99爽视频| 日韩成人AV在线| 色色色地址| 日韩伊人大香蕉| 色五月色五天色情网址| 亚洲蜜乳AV| .肏屄视频一区二区| Av狠狠色丁香婷| 亚洲性爱AV在线| 欧美日本韩国亚洲| 伊人久久婷婷五月综合97色| 91丨九色丨国产打屁股网站| 欧美色偷偷大香| 国产精品男人AV不卡| 99色综合久久| 婷婷五月天天激情| 2017人人操| 偷拍91九色| 日韩精品超碰在线观看| www.超碰在线| 丁香五月综合久久八| 五月婷高清视频| 丁香六月 人妻| 久久99久久99精品免视看婷婷| www.五月天婷婷姐姐| www.五月婷婷久久.com| 天天日天天日天天搞| 99热无码| 99男人的天堂| 婷婷五月天视频| 日日夜夜天天| 97超级碰| 天堂在线婷婷| 91人人网| 六月丁香五月亭亭| 亚洲视频图片婷婷五月| 激情综合网五月| 天天色视频| 欧美在线| 婷婷五月天久| 在线成人网站| 情五月亚洲婷婷| 五月激情婷婷在线| 九色91国产| 成年人丁香五月| 亚洲字幕AV一区二区三区四区| 玖玖九九超碰| 午夜九九九九九九九九九九九九九| 久久久婷| 99爱视频免费看| 激情综合五| 99热这里只有精品3| 一本色道久久88综合日韩精品| 另类图片五月天激情| 婷婷久久五月天丁香| 天天射夜夜爽| 色婷婷社区| 五月婷婷五月天| 丁香婷婷欧美综合| 婷婷五月天堂| 丁香五月第四色88| 免费亚洲婷婷中文字幕| 久久艹 五月天| 丁香久月| 亚洲日韩乱码一区二区三区四区| 欧韩性爱| 中文字幕91,综合| 日本欧美在线| 天天做 天天爱| 香蕉综合在线| www.97视频| 狠狠色丁香久久婷婷综合五月| 激情深爱综合| 五月婷婷激情中文字幕| 亚洲V国产V欧美V久久久久久| 激情亭亭五月| 丁香伊人综合| 亚洲午夜av| 亚洲传媒在线观看| 99精品成人无码A片观看金桔| 岛国午夜视频| 色五月天中文字幕| 色五月婷婷在线| 丁香婷婷九月在线| 超碰在线人妻| 久久综合中文字幕| 99在线免费视频播放| 激情婷婷网| 一本伊人色婷| 狠狠爱婷婷五月天| 久草网大香视频| 新激情综合| 久久人妻情侣| 99色在线视频| 啊V视频在线观看| 人妻精品久久久久久| 丁香五月天激情视频| 国产色99| 伊人深爱综合| 婷婷91视频| 婷婷丁香视频在线观看免费| 综合99综合久久久久久久| 开心五月婷婷伊人| 久久婷婷五月综合色播| 99色在线视频| 91操碰| 98色花堂98t.R| 丁香五月色激情| 婷婷五月天成人基地| 丁香五月av| 综合婷婷| 婷婷色五月激情| 秋霞日本免费毛片A片| 99乱视频| 精品无码片| 欧美综合五月丁香五月天| 色色综合网站| 九九激情视频| 538在线精品| 五月婷婷黄网站大全| 色五月婷婷久久爱| 婷婷中文字幕| 五月丁香成人| 开心激情网五月天| 玖玖玖婷婷婷| www.99视频| 五月丁香久久激情综合| 这里精品| 99久久亚洲国产| 天天干狠狠| 天天操狠狠操| 666555。COm毛片| 可以免费看av网站| 图片区 小说区 区 亚洲五月| 天天综合色丁香| 激情五月综合| 色婷婷视频| 无码少妇高潮喷水A片免费| 美女亚洲五月丁香| 天堂无码人妻精品AV一区| 亚洲激情av| 九九热在视频| 激情5月婷婷| 欧美婷婷五月天综合| 五月天社区婷婷| 丁香五月在线观看完整版| 色九九一二| 久8色色| 成人五月丁香花| 天天日天天久久青青| 精品综合五月| 国产成人亚洲综合亚洲| 久久婷婷大香蕉| 午夜天堂一区人妻| 69久久99精品久久久久| 激情五月天www| 色97啪啪| 大香蕉久久久久| 天天舔天天插天天爱| 五月激情天| 天天色天天舔天天爱天天爽| www.爱婷婷.com| 九九99九九99偷拍视频免费看| 99久热| 日韩精品AV一区二区三区| 六月丁香五月激情婷婷| 日本三级第一页| 丁香五月激情五月| 99这里只有精品视频免费| 国产欧美熟妇另类久久久| 亚洲精99| 69精品人人人人人人| 成人在线精品| 天天久久综合| 色婷婷综合成人| 色五月激情五月| 国产三级秋霞| 色色99| 超碰九热| 五月综合久久| 精品日本视频444| 五月天亭亭俺也| 成人精品人妻| 五月天激情亚洲| 婷婷丁香97| 五月婷丁香久久久| 久色88| 老师的粉嫩小又紧水又多A片视频 粉嫩AV久久一区二区三区 | 综激情网| 操逼电影免费看| 婷婷成人综合| 激情五月婷婷老师| www。五月天激情| 伊人激情综合| 五月天国产| 五月丁香婷婷网在线在线| 天天操夜夜夜夜爽| 色日本综合| 欧美三级巜人妻互换| 五月丁香久久久久| 五月天激情婷婷小说| 久操无码| www.久久色.com| 亚洲精品久久久久久久久久吃药| 婷婷狠狠18禁久久| 五月婷六月天| 99视频色在线观看| 色狠狠999综合| 久久se 综合网| 亚洲综合激情五月久久| 99热费观看| 噜噜噜噜在线| 五月丁香六月婷婷精品| 亚洲色婷婷五月天| 五月天婷婷偷拍| 极品人妻VIDEOSSS人妻| 激情五月天视频| 99在线精品视频在线观看| 狠狠色激情在线| eeuss人妻| 久久久久久久久99精品| αV电影| 丰满少妇猛烈A片免费看观看| 天天做夜夜爽| 久久色天堂| 五月丁香婷婷综合视频| 色五月婷婷丁香国产在线| 天天情天天狠天天透| 另类国产区| 精品视频网| 亚洲无码99| 久久婷婷精品| 狠狠人妻色综合| 婷婷五月天无码| 成年人看Va免费视频| 99热久久这里只有精品| 色99视频| 婷婷五月天视频| 成人短视频在线观看| 日韩另类在线观看| 饮料下药迷倒漂亮女同事强干| 五月综合影院| 五月天深爱激情网| 亚洲成人乱码av网站| 欧美va视频不用播放器的va视频网| 九九综合网色全集| 99热热这里只精品996小说| 九月大香蕉| www.99热精品99.com| 亚洲成人日韩无码精品| 婷婷丁香日韩五月| 国产黄色在线观看| WW婷婷五月天com| 婷婷五月天 丁香五月天 裸体| 日产精品一线二线三线芒果| 99色在线| 青青草国产亚洲精品久久| 欧美成人AAA片一区国产精品| 丁香五月成人| 欧美成人AAA片一区国产精品| 夫妇交换刺激做爰| 九九视频在线观看视频6| 人妻丰满精品一区二区A片| 五月天激情国产综合婷婷婷| 成人做爰黄A片免费看直播室男男| 免费观看18视频网站| 风流少妇A片一区二区蜜桃| 久久小说| 国产原创视频91九色| www.久久色.com| 碰人人操| 婷婷激情五月天小说| 99热久草| 婷婷五月天成人网| 99超在线| 伊人AV五月婷| 五月综合激情网| 99热综合网| 色播五月| 99热这里有精品| 五月美女婷婷风骚 | 91精品婷婷国产综合久久| 9久热在线视频精品| 99激情在线| 亚洲综合视频天天精品| 狠狠狠人妻| 丁香五月激情图片| av在线观看网站| 少妇综合网| 中文字幕 中文字幕明步| 中文字幕精品推荐免费在线观| 99九精品| 开心五月六月婷婷| www.五月激情红色| 亚洲一区二区无遮挡A片| 五月婷婷深深爱| 丁香五月网络网络| 色五月婷婷色五月婷婷色五月婷婷| 日日夜夜干| 26uuu国产| 亚州男人天堂婷婷五月| 日本啪啪网| 久久黄色网扯| 婷婷六月久久综合导航| 色五月大香蕉| 婷婷97色| 五月婷婷综合久久| 97人妻碰碰碰久| 快色t v在线入口| 激情亭亭五月| 亚洲乱码精品久久久久.. | 天天操天天曰| 波多婷婷久久| 玖玖在线视频福利| 天天热夜夜操| 美女激情综合| 牛牛澡牛牛爽| 色丁香婷婷| 五月天中文网| 婷婷五月激情图片| 五月丁香亭亭激情操逼网| 九九九九国产| 99av视频| 亚洲va综合va国产va中文| 婷婷色色丁香| 99色啊| 婷婷五月综合社区| 9色婷婷| 91色婷婷综合久久中文字幕二区| 秋霞午夜理论| 亭亭色网| 岛囯综合激情网| 噜噜噜噜噜在线| 狠狠干夜夜干| 少妇真实被内射视频三四区| 琪琪色热色色| 日日爽日日爽| 国产全是老熟女太爽了| 亚洲五月激情| 激情综合色播| 777精品久无码人妻蜜桃| 先锋资源91| 五月花激情| 男女啪啪做爰高潮无遮挡| 97干在线播放| 襙比视频| 婷婷五月天激情四射| 婷婷五月色影视先锋| 六月婷婷七月丁香| 国产精品色| 婷婷五月天久久| 99爱这里只有精品免费视频| 婷婷五月性感| 欧美综合激情五月丁香| 91精品久久久久| 成人五月天丁香婷| WWW.婷婷| 97人人干视频| 思思热99在线| 深爱激情小说五月婷婷| 六月婷婷激情| 在线网黄| 日本成人噜噜噜| 久久久91精品| 天天操,夜夜骑| 色婷婷成人做爰A片免费看网站| 欧美性爱五月天| 综合五月婷婷| 婷婷五月成人社区| 久久九九99字幕| AV中文在线| 做爱夜夜干天天操| 久久九九热视频| 嫩草视频在线观看| 色玖玖爱| 99九九玖玖| 激情五月婷黄版| 99日精品视频| 天天舔天天摸| 99热只有精品在线| 五月婷婷,狠狠操| 在线99精品| 开心激情五月天网| 色婷av| 亚洲中文乱字字幕在线永久| 国产伊人大香蕉| 久久久这里有精品| 日批在线看| 色婷丨日丨天丨综合久久| 97五月天| 精品九九在线观看| 99色色网| 激情婷婷狠狠干| 亚洲视频在线观看| 天天舔天天| www.99精品日操伊人乱碰在线| 五月婷婷欲色| 狠狠色综合无线观看| 婷婷五月天第三页| 久久的爱大香蕉| 九九性爱网| 日本色色图| 五月天伊人网| 亚洲丁香五月天在线视频| 欧美亚洲色色色色| 情婷婷五月天| 97人妻碰碰碰碰碰久久久久久| 人人摸人人干| 婷婷伊人久久| 538任你爽| 99自拍视频在线观看| 天天插天天插| 人人干AV| 91久草五月天婷婷| 中文字幕av久久爽一区| 天天舔天天插天天爱| 蜜桃五月天| 日本VA视频| 中文字幕丰满人妻无码专区| 欧美久热| 深爱开心激情网| 欧在线一区| 六月天丁婷婷| 久久综合中文字幕| 天天干天天操天天拍| 婷婷激情五月| 欧美日比视频| 亚洲婷婷丁香五月亚洲| 欧美网站视频4399| 久久婷婷在线| 日本久久精品18| 丁香桃色网| 成人操呦av| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 亚洲日日操| 婷婷六月色丁香视频在线观看| 久久综合五月情| 国产97色在线| 色播五月丁香| 五月婷婷综合天天操| 91色噜噜狠狠狠狠色综合| 激情精品久久| 丁香五月婷婷影院| 九九久久99| 丁香五月中文字幕久色| 激情五月综合久久| 色婷婷成人| 免费亚洲婷婷| 九九成人高清视频| 91综合视频在线| www.婷婷五月天| 久久激情五月天| 色婷婷久久综合久色综| 欧美性猛交99久久久久99按摩| 五月天综合在线| 五月激情开心婷婷| 97亚洲婷婷| 青柠影视免费高清电视剧| 91成人看片| 天天综合天天玩夜夜玩天天玩夜夜玩 | 东京热人妻一区二区三区在线| 欧美影院婷婷| 五月天亚洲最大成人| 成人中文字幕在线| 牛色色碰| 天天干天天干天天干天天干天| 五月天婷a| 色九九综合| 极品九九九九九九| 成人精品一区日本无码网| 天天日天天色| 狠狠五月激情婷婷直播片| 99 热国产在| 9色在线视频| 成人性爱无码| 91嫩草国产线观看亚洲一区二区| 日本色综合| 丁香婷婷色五月天| WWW,五月天| 色婷婷丁香社综合| 国内久久亭亭| 国产成人AV在线| 99re99热| 啪啪东京热| 99视频在线观看地址| 99热这里只有精品66| 色色色色色综合| 五月丁香六月激情狠狠| 欧美成性色| 91九色欧美| 色婷婷色综合| 99色爱| 色五月婷婷在线| 丁香五月网址| 五月亭亭狠狠| 婷婷丁五月| 97超碰人人操| 另类视屏| 五月天怕怕| 热久久999| 思思久久99热只有频精品66| 激情綜合W W W,激情五月天| 亚洲综合另类| 天天综合色| 啪到高潮激情丁香五月| www.狠狠干| 婷婷5月开心6月| 五月亭亭六月色| 色噜噜狠狠色综| 久碰久操| 亚洲成人在线综合| 日本色色网站| 9热在线视频精品| 三级黄色大片视频| 亚洲激情综合| 婷婷六月天| 色色色999| 中文av网| 天天日天天草| 亚洲男女激情| 欧美丁香婷婷五月天| 激情五月婷婷在线| 日本九九热| 亚洲 综合中文| 久久婷婷五月国产色综合激情| 综合大香蕉| 色色激情五月天| 大香蕉九操| 亚洲最大在线| 色色激情五月天| 性爱综合网| 日韩成人网站精品久久大全| 激情色中文| 激情婷婷五月天。| 五月丁香六月婷婷,婷| 欧日美女Va| www.狠狠操.com| 夜夜操少妇| 99日这里只有精品| 人人爱人人摸人人澡| www.日日夜夜.com| 网站免费一站二站| 丁香色成人| 99热免费在线| 亚洲成人免费电影| 婷婷综合性爱网| 91碰免费视频| 亚洲另类AV| 91人人操人人爱| 亚洲操操| 白天AV月月| 色日本网| 夜夜爽天操| 九九精品热播| 丁香五月电影| 夜精品无码A片一区二区蜜桃| 久久精品一区二区三区四区| 婷婷五月天丁香久久| 综合激情肏逼网| 人妻激情视频| 丁香五月婷婷狠狠色| 婷婷色五月天第7色| 天天天天天天噜| 色五月播五月| 六月激情婷婷| 最新高清无码专区| 色婷大香蕉| 99久在线精品| va中文资源在线观看| 婷婷五点亚洲| 五月天综合激情网| 思思热在线| 亚洲中文字幕在线电影| 激情淫乱男女| 综合丁香婷婷五月天| 欧美婷婷五月天综合| 操操自拍| 激情五月天婷婷| 热996精品在线观看| 色婷婷婷婷| 密桃激情五月天综合网| 极品另类| 婷婷97| 97超喷视频在线观看| 五月停停色色丁香| 91在线日本| 丁香五月激情五月色综合| 五月综合丁香婷婷| 天天综合中文| 亚州日本欧州韩美高青高潮一| 欧美日韩成人在线观看| 大香蕉网站,大香蕉综合| 成人av在线电影| 伊人高清无码| 99日精品视频| 五月丁香欧美综合免费视频| 亚洲婷婷激情综合激情999精品| 色五月婷婷五月天| 婷婷激情综合色五月久久91| 91狠狠综合久久| 五月丁香做爱视频| 色综合色综合网| 色亭亭九月| 性日本激情| 六月婷婷中文字幕| 综合婷婷| 9热精品| 色情播放| 色播五月| 日本操天堂| 色五月天堂| 九九热视频精品| 婷婷在线播放| 亚洲天堂大香蕉| 天天操天天谢| 五月婷婷丁香日韩在线| 国产成人AV不卡| 欧美日本国产| 色婷婷88| 久久久久妻| 五月婷婷香蕉| 99无吗| 99九九视频| 三日本无码| 五月丁香久| 99成人无码| 91九色国产| 九月丁香八月婷婷加勒比| 久草免费福利视频| 国产69久久久欧美黑人A片| 996热| 一区三区视频有限公司| 综合色天天| 色五月丁香婷婷| 成人网页在线观看| 丁香五月婷婷俺也要去| 婷婷香蕉| 久热视频A.| 9久热在线视频精品| 欧美碰碰| 激情五月婷婷中文字幕| 婷婷色五月天在线| 欧美性猛交99久久久99| 六月婷婷久久大全| 激情五月成年| 这里只有精品,日韩视频| 丁香婷婷色五月| 色噜噜五月天| 亚洲美女网Va| 大鸡巴伊人网| 中文字幕久久一区二区三区| 狠狠干综合| 99精品视频在线6| 婷婷九月色| 超碰人人干| 色99热| 色色色婷| www.五月丁香| 91成人电影| 日亚二欧美| av激情在线| 五月丁香啪| 婷婷丁香亚洲色综合91| 99精品色| 亚洲AV第二区国产精品| 狠狠干五月天| 日本丁香久在线| 成人va视频| 婷婷天堂视频| 五月天激情网图片| 久超超碰| 在线成人网址| 色婷婷综合视频| 久久九色| 第2色五月婷| 97色干| 婷婷激情五月天亚洲综合| 国产69久久久欧美黑人A片| 2025天天爽天天摸| 91无码一区人妻A片蜜| 五月婷久久在线| 婷婷五月另类网站| 26uuu国产| 成人午夜免费电影| 91中文在线| WWW.天天日| 蜜桃成语时李时珍 免费| www.五月激情.com| 丁香五月之久操视频| 久久这里只有欧美| 99啪在线| 97欧美在线| 丁香五月天在线视频| 天天弄天天操| 久久视频九九视频| 丁香深五月婷婷| 停停五月色宗合| 草草操操| 国产成人一区二区三区在线观看 | 丁香五月婷婷在线| 亚洲丁香五月美女| 99干免费视频| 在线视频99| 五月丁香色情| 天天射影院| 五月激情另类| 97婷婷五月丁香| 欧美婷婷五月丁香| 激情久久 婷婷| 成年人丁香五月| 天天插轮理| 九月婷婷在线观看| 99A级片| 思思视频这里是精品| 99只有精品9| 婷色五月天| 伊人婷婷青青cao| 中文字幕1区2区。| 婷婷五月激情丁香| 青青草tp| 亚洲日本韩国| 夜夜夜夜撸夜夜操| 五月婷色色| .青娱乐天天操B| 亚洲第79页| 538任你爽视频不一样的| 成人五月天丁香| 超碰99在线观看| 狠狠五月婷婷| 五月婷中文字幕| 亚洲天堂AAA|