免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
国精产品一区一区三区免费视频| 一级片操逼视频| 狠狠爱五月婷婷| 99视频| 少妇激情基地| 91丨九色丨43老版熟女| 狠狠插狠狠插| 五月丁香网中文字幕| 丁香六月激情综合| 五月婷六月天| 超热久碰.com| 久久久久9| 99色色热热| 99免费热视频在线| 色婷婷六月天在线| 日本97在线视频| 操日视频| 丁香五月天亚洲视频| 亚洲色图81p| 超碰国产AV| 日韩一级片| 99精品在线| 五月花综合| 99精品在线观看| 婷婷黄色五月天在线视频| 99精品偷自拍| 亚洲中文字幕在线观看| 少妇搡BBBB搡BBB搡毛茸茸 | www.粉嫩av.com| 亚洲成av人影院| 思思99热| 久久久婷婷五月亚洲97号色| 五月丁香六月情婷婷久久| 成人无码中文| 欧美成人精品三区综合A片| 第四色26uuu| WWW·色色色·COM| 亚洲九九99精品视频在线播放| 思思99热| 超碰AV在线| 亚洲成人乱码av网站| 91啪啪视频| 在线伦子99热| 五月天综合色| 在线99精品| 久久综合九九| 五月天久久久| 超碰免费人| 欧美日综合| 成人综合伍月天| 五月色婷婷中文字幕| 国产亚洲精品AAAAAAA片| 99热在线精品播放| 久久婷婷亚洲| 婷婷淫淫狠狠六月| 婷婷五月天啪啪| 久久婷婷五月综合97色一本| 深爱五月中文字幕| 色 丁香婷婷| 久久草中文日韩欧美| 久久久av久av久片一区二区| 婷婷丁香综合色AV| 任你搞网站| 色五月天堂| 丁香花操逼| 婷婷丁香五月天色色| www激情| 日日爽日日| 激情五月综合免费| av婷婷丁香 六月| 五月天社区婷婷丁香社区| 亚洲亚洲人成综合网络| 91久久久久久| 色婷婷另类| 五月天婷婷激情在线色图| 色色婷婷色色| 久久久er热| 亚洲精品又粗又大又爽A片| se色99| 丁香花狠狠婷婷亚洲中文字幕| 26uuu日韩| 开心激情网在线| 狠狠草狠狠草| 久久a热| 97色五月天| 久久婷婷五月综合色播| se99高清无码| 人人草人人爱手机视频看看| 91九色精品熟女内射| 淑女丝袜bi操逼123| 五月亚洲| 成人做爰黄A片免费看直播室男男 久草热8精品视频在线观看 | 国产精品人妻在线网址| 亚洲精品乱码久久久久99| 内射激情在线| 九九色热| 色色九九五月天 | 激情综合色婷婷啪啪六月天| 久久五月天激情视频| 五月花丁香婷婷| 九九热精品在线| 色爱亚洲| 香蕉久久六月| 五月丁香婷婷综合在线| 丁香五月综合激情啪啪| 国产这里只有精品| 色婷婷综合久久| 国内自拍97在线| 91大神操美女| 欧美丁香六月激情视频| 深爱五月激情五月| 色久女| 狠狠五月丁香色婷| 色色色色热| 九九色婷婷Av| 丁香婷婷五月天激情四射| 中文字幕日韩成人| 99色网站| 99热免费| 九九热在线观看6| 在热视频精品| a网站免费观看| 久久涩视频| 五月丁香av中文| 色丁香婷婷美女视频网站| 性一交一乱一交A片久久四色| 成人国产网| 丁香五月很很肏| 乱女乱妇熟女熟妇综合网站| 久久ab| 色很久综合| 99爽视频| 五月婷色| 五月丁香影院| 十一月婷婷激情四射| 91九色最新视频| 大胆伊人久久| 五月色丁香婷婷中文字幕| 久久激情天堂| 色综合大香蕉| 日本人妻A片成人免费看片| 爱狠射| 五月色导航| 五月天激情四射| a在线观看| 99精品久久久久久久婷婷| 日本久久99| ww久久| 男人天堂99| 在线中文亚洲| 日韩99色99| 久久婷婷午夜| 精品九九视频| 五月激情综合网| 九九综合久久| 久久小说网| 婷婷丁香宗合888| 夜夜骑天天操| 99ri在线| 久久综合爱| 久久丁香婷| 好激情在线综合网| 日本在线视频播放91| 操人久久| 六月丁香射婷婷欧美色图片| 一区二区无码视频| 久久99精品视频| 亭亭五月丁香综合欧美| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 久久免费9| 五月天婷婷久久视频| 九九99偷拍视频| 伊人9在线| 久久久久久久人妻| 深爱婷婷基地| 亚洲狠狠爱婷婷| 天天色,天天操,天天射| 婷婷94s| 天天干天天干天天| 五月婷婷综合网| 99色在线| www,av好吊操| 久久精品一区二区三区四区| 成人超碰Av| 色婷婷成人久久| 五月丁香婷婷AV| 网色99| 五月婷婷片| 狠狠爱五月婷婷| 天天精品视频免费观看| 欧美久久婷婷| 久久久aaa| 久热这里只有精品6| 日本人人草草| 狠狠婷婷色| 综合久久人妻| 综合99在线| 激情久久久久久久久| 丁香五月色色| 狠狠干狠狠操狠狠爱| 激情六月婷婷| 99爱免费在线视频| 久久99免费视屏| 亚洲综合网在线| 日日撸天天干| 天天弄天天爽| 亚洲黄网AV| 日本高清综合网五月丁香| 色v综合网| 欧美性做爰大片免费看办公室| 欧美性爱5月天天天看| 久久五月天婷婷| 五月六月丁香婷婷在线观看| av一区二区电影免费在线观看| 欧美色色色色色色色色色色| 天天天天做夜夜夜夜做| 最新日本A片| 久久九九99视频| 日日干综合| 蜜乳人妻一区二区三区| 激情操逼婷婷| 亚洲激情久久| 亚洲精品大片| 九热...av| 九九无码视屏| 六月米奇色综合| 小骚穴电影| 婷婷婷狠狠| 伊人久久大香线蕉av一区| 六月婷婷日| 思思精品视频| 九月婷婷久久| 五月丁香久人妻中文| 伊人超碰| ji'qing'luan'ren'lun| 久久网站免费亚洲| 亚洲精品久久久久久久久久吃药| www.91.com黄| 99亚洲日韩| 婷婷5月色| 97热精品| 成人av在线网址| 综合色图婷婷| 国产av一区二区三区| 99色在线观看| 精品人人操| 操逼巨乳91| 色婷婷先锋| 婷丁香五月天| 婷婷六月天精品| 包操45分钟网站| 婷婷丁香五月天婷婷| 五月婷婷婷| 99热人人操人人操| 一区二区乱视频码| 色色婷婷色色| 丁香五月婷婷偷拍| 婷婷综合色| 色婷婷狠狠久久YY| 激情婷婷| site:minyis.com| 天天日日夜夜爽| 九九热欧美| 99丁香五月婷| 99久久综合| 激情床戏| 久久人操| 激情影院免费视频婷婷五月天| 色五月成人婷婷| 婷婷色综合网日韩国产| 激情电影五月婷婷| 久久在线大香蕉| 99热销国产这里有精品| 综合久久婷婷| 影音先锋 91工厂| 夜夜天天久久婷婷| 婷婷五月综合视频免费播放| 超碰国产在线观看| 99久视频| 伊人免费视频9| 丁香av网| 一逼色综合| 日韩九九视频| 亚洲噜色| 久色激情| 色噜噜狠狠色综无码久久合欧美| 色综合色香蕉网| 五月做爱| 青青草性爱视频| 老司机午夜福利视频金瓶梅| 狠狠操性爱av| 99热99在线| 思思热精品在线| 大香蕉综合在线| 欧美三级巜人妻互换| 久热精品9999| AV中文在线| 天天爱天天做天天舔| www.狠狠干com| 五月天婷婷在线AN| 五月天综合色| 狠狠色中色| 丁香五月最新地址| 精品久久久久久久人妻| www.久久久久久久| 99丁香五月| 久久久A级视频| 国产精品成人在线| 天天日,天天射,天天舔| 噜噜五月天综合| 日韩AV无码影片| 天堂网色色| 99热91| 日日射天天射| 婷婷涩五月| 99亚洲无码| 丁香五月激情网| 五月丁香网站| 色色婷| 婷婷综合伊人丁香| 色婷婷丁香五月| 九月婷婷综合色干| 色噜噜,噜噜色| 日本va欧美va欧美精品88| 大香蕉综合网| 91超级碰在线| 99热首页| 久热A片| 色噜噜狠狠色综合日日| 天天做天天爽| 任你干线上免费视频有3吗| 日本三级黄色大片| 色婷五月天| 婷婷五月丁香四射| 呦呦视频无码播放| 99精品国产在热久久| 99人人干人人| 色婷婷精品视频| 欧美午夜乱妇午夜福利| 久久久久婷婷五月热综合| 婷婷播5月| 99免费在线视频| 六月丁香中文字幕| 天天干天天爽| WWW色色色COM| 狠狠撸激情综合丁香五月天俺来啦| 狠狠综合久久| 久人人操| 人人摸人人摸| 伊人丁香五月婷婷潮吹| 五月天狠狠网| 国产精品国产| 99啪啪网| 九九人人精品| 婷婷五月激情欧美| 91超碰九色| 免费视频99| 色婷婷文字幕| 99re热在线视频观看| 九九99热精品| 久色激情| 大香蕉天堂| 天天摸天天做天天爱天天爽| 精品人妻伦一二三区久久| 丁香午月AV中文字幕| 久久久8| 色播五月综合网| 色色色色av色色色色| 97碰碰草| 开心婷婷丁香五月| 99热在线播放| 久草热久草在线视频| 久久综合这里只有精品1| 色碰碰视频| 9191avse| 噼里啪啦在线观看免费完整版视频| 色亚洲无码| 色区久久| 可以免费看AV网站| 日本97久久久精品| 99re在线观看| 亚洲九九九九| 9色免费网| 婷婷丁香一月| 99re8热精品免费视频| 色婷婷视频综合| 婷婷五月天av小说| 情色婷婷五月天| 91九色小视频| 亚洲日韩一页精品发布| 婷婷五月天激情开心网| 久久性爱视频| 5月丁香美女影院| 日韩操| 丁香花操逼| 激情婷婷久久| 亚洲成人网在线观看| www.99色| 五月开心激情| 97自拍视频在线| 色999;丁香五月| 中文字幕 久久9999| 9l久久久视频| 五月丁香网站| 深爱开心五月天| 免费日本aⅴ中文字幕 | 婷婷五月激情网站| 丁香五月婷综合| 五月丁香久久| 欧美色六月婷婷| 在线观看日韩12345区| 99这里有精品视频| 亚洲瑟瑟精品在线| 97碰人人操| 天天插天天射| 偷拍五月丁香| www.五月天婷婷姐姐| 91婷婷五月丁香碰| 午夜天天精品视频| 激情AV| 婷婷丁香五月亚洲17cao| 91丨九色丨大屁股| 操操熟女| 亚洲欧洲中文日韩久久AV乱码| 五月花在线观看视频| 青996青| 色婷插| 亚洲精品电影| 婷婷五月情| 亚洲色五月天是什么| 久久久免费图片视频| 色色操| 九九热re99re6在线精品| 婷婷美女精品视频| 日韩九区| 亚洲成人在线综合| 91N 一起草| 五月天色色色| 五月丁香激情综合网| 五月丁香激情综合久久| 国外亚洲成AV人片在线观看| 97涩涩丁香五月天| 色婷婷91| 99看片| 欧美性爱日韩性爱| 夜夜躁爽日日| 99爱视频在线免费观看| 9 9热这里有精品| 丁香五月天之婷婷影院| 另类在线| 色综合五月天| 五月天 另类图片| 久久久噜噜噜www成人| 激情婷婷五月| 深爱五月月天| 久久9情免费| 99热日韩| 爱久综合| 强辱丰满人妻HD中文字幕| 婷婷激情五月综合丁香社| 99久热在线精品99re6热| 日日杆天天| 五月天久久综合| 亚洲综合成人网| 婷婷五月天婷婷| 久婷婷五月综合欧美| a在线观看| 6月丁香婷婷激情| 天天肏视奸| 999婷婷综合| 青青草a在线| 天天操天天干天天射| 五月综合色| 五月丁香六月婷婷亚洲天堂网站| 五月天开心网| 99热1| 热热久久精品视频| 99人人操| 日日影院 | 裸体美女丁香五月天。| 亚洲成色综合网站免费观看| 婷婷六月久久| 九九成人| 五月天久久综合婷婷| 亚洲 综合中文| 97成人丁香| 能直接看的av网站| 婷婷五月六月| 日日婷婷不卡| 爱久综合| 亚洲国产另类av| 另类激情五月| 六月婷婷中文字幕| 国产五月婷| 97精品欧美91久久久久久久| 激情性爱婷婷| 丰满少妇乱A片无码| 大香蕉综合| 热久视频| 婷婷五月天视频在线观看| 婷婷午夜| 久久精品系列| www.夜夜.com| 婷婷 激情 五月| 99狠狠| 99在线资源视频| 激情综合一| 婷婷五月天基地| 99精品22| 亚洲精品性色| 亚洲一色色色色色色色色| 人人插9| 久久久精品婷婷五月天| 久久精品99国产精品日本| 五月丁香婷婷久久| 丁香五月天在线观看视频| 色综合久久无码| 成人做爰A片免费看网站找不到了| 99在线观看精品| 色五月婷婷九月| 爱婷婷五月| 丁香六月婷婷开心| 五月天婷婷綜合院| 六月色激情| 无码人妻一区二区一牛影视| 色婷婷精| 久久月天堂| 香蕉网婷婷| av九九| 99思思| 色欲影香| 激情AV在线| 色婷婷五月天在线观看| 丁香五月婷婷五月| 丁香五月婷婷AV在线| 久久一热| 亚洲VA口| 婷婷的色色五月天| 123草逼网| 丁香五月天婷婷激情| 这里精品| 六月色丁香中文字幕| 五月丁香好婷婷A片网| 国产99视频永久免费| 成人婷婷五月天| 色色综合日韩| 婷婷丁香五月天小说| 五月激情综合激情五月| 丁香六月视频免费观看| 亚洲色A| 色色色.COM| 亚洲天码视频www蛋播视频| 久久人妻人人槡| 五月天激情婷婷小说| 国际国外精品欧洲南美洲专区无码不卡| 色综合xx| 精品,99| se影音资源在线观看| 色婷婷综合视频| 久久精品系列| 99爱视频在线观看| 成人无码精品1区2区3区免费看| 无码日本精品XXXXXXXXX| 色婷婷小说| 91碰免费视频| 91 原创 在线 九色| WWW.99视频| 亚洲激情综合| 激情五月网站| 新激情五月天天在线网| 91丨九色丨43老版熟女| JAPANRCEP老熟妇乱子伦视频| 丁香六月婷婷久久综合| 97午夜一区二区| 亚洲综合另类| 五月婷婷干干干| 狠狠狠人妻| 五月婷婷丁香在线| 亚洲激情视频在线观看| 国外亚洲成AV人片在线观看| 五月天色欧美| 99精品在线| 黄涩毛片| 五月婷婷在线观看黄| 五月激情小说| 99热九九九九| 97色色婷婷| 激情WWW| 欧美丁香婷婷五月天| 久久久五月五丁香| 亚洲乱码日产精品BD| 久热天堂| 这里只有精品偷拍| 九九色热| 婷婷五月天在线观看| 精品国产a| 91热99| 天天橾日日橾夜夜橾17| 久久久久9999| 色约约视频一区二区三区四区五区 | 国外亚洲成AV人片在线观看| 99精品偷拍视频| 99热这里只有精品国产免费| 婷婷五月天无码| 五月婷婷成人| 五月色丁香婷婷综合| 97人人草| 狼人婷婷综合| 丁香五月之久操视频| 亚洲综合1024| 久久少妇视频| 九月婷婷综合| 婷婷99狠狠躁天天躁中文| 色月视频| 99综合免费视频| 97色五月丁香婷婷| 欧美婷婷五月激情| 超碰在线观看99| 婷婷中文综合网| 97色色色色| 六月激情久久| 色色色色色九九九九九| 蜜臀av无码久久久久久久久| 毛片新网地| 欧美性爱丁香五月| 91狠狠色| 91丨九色丨白浆| 丁香影院五月综合| 丁香五月综合图片在线观看| 综合久久婷婷| 丁香色综合| 性爱视频99| 热91久| 五月天丁香六月综合| 婷婷内射视频在线| 9精品一区| 成 久久| 色婷婷在线视频| www九九| 欧美视频五区| 中文字幕性爱视频| 人妻VideOssS人妻高清| 精品人妻午夜一区二区三区四区| 人妻性爱| 99热免费| 九九热99re8热免费观看| 99热99精品| 97久人人| 激情视频综合| 九九人人自拍| 日日干日日| 五月激情四射网站| 99热777| 五月开心播播网| 国产夫妻操逼内射视频| 开心五月婷婷激情| www.五月天性.com| 日本少妇裸体做爰高潮片| 五月天激情站| JAPANRCEP老熟妇乱子伦视频 | 超碰人人摸AV| 日本熟女内射| 六月婷婷AV| 天天骑天天操| 婷婷五月天久久综合88| 热99在线精品| 婷婷之玖玖| 久9久成人精品视频| 五月天久久网站| 五月丁香综合影院| 欧美99视频| 九九黄色网| 婷婷在线播放av| 人人操五月天| 五月天婷婷激情干干| 婷婷五月色播天| A久网| 六月婷婷青青青视频| 少妇综合网| 亚洲另类AV| 色婷婷日本| 丁香五月激情啪| 99热精品在线播放| 色爱综合视频| 丁香婷婷婷| 日韩AAAAAAAAAAA片| 日亚二欧美| 99色婷婷视频| 插插五月天| 成人视频免费观看高清完整版在线观看| 99综合色| 五月丁香婷中文| 国产精品99久久久久久久女警| 婷婷色5月天在线。| 九九99精品视品| 伊人五月综合网| 久操激情| 国产古装妇女野外A片| 97色色在线视频| 九九色大香蕉| 人妻操逼视频| 婷婷色成人| 超碰在线超碰| 99热超碰| 丁香五月综合网亚洲综合欧美狠狠| AVV黄| 婷婷99狠狠| 伦99热| 99re青青草| 五月婷婷六月丁香| 婷婷涩五月天综合| 婷婷午夜综合| 国产成人综合亚洲| 久久婷婷内射| 99热大片| 九九热啪啪| 影音先锋 萱萱| XX久久| 综合激情网| 91久久久久久久久久| EEUSS鲁片一区二区三区| 另类激情网| 六月丁香婷婷视频综合在线观看| 91热视频| 色噜噜狠狠色综无码久久合欧美| 丁香五月天AV| 蜜臀A∨在线水帘洞| 色久99| 久草热8精品视频在线观看| 伊人五月综合网| 五月婷婷香蕉| 日韩成人无码人妻| 人妻中文字幕网| 欧美性做爰大片免费看办公室| 99色色网| 日本性激情色播| 婷婷在线观看五月天在线视频| 97超碰在线观看免费| 色狠狠色| 五月婷婷成人| 色婷婷激情五月天| 天天网站天天爽| 大香蕉久久久久| 丁香六月激情国产| 国产乱子轮XXX农村| 日日爽日日| 五月欧美丁香在线观看| 开心五月综合激情综合五月| 99色在线| 狠狠操综合| se色综合网| 熟女色色一区二区| 性色做爰片在线观看WW| 色婷婷狠狠| 天天插天天插| 日韩爱操视频| 成人五月天视频播放| 婷婷综合五月天激情| 草一草avb| 亚洲六月色婷婷| 亚洲AV电影美洲AV电影| 婷婷综合性爱网| 国产成人网址| 色99视频| 九九久久综合| 天天操人人干| 99热66| 五月天婷婷在线视频| 五月婷婷丁香色吧网| 激情五月天综合图片小说网站| 无码地址| 婷婷五月天AV网| 91黄址| 色私五月婷婷| 久久婷狠狠色| 久天综合| 超碰超碰在线| 啪啪色激情五月天| 97色色婷婷| 91九色精品女同系列| 精品网站:999WWW| 99黄色在线视频精品熟女| 日本色色网站| 999久久久国产精品| 在线观看亚洲AV| 伊人三级激情| 日本九九网| 婷婷五月18永久免费网站| 激情五月婷婷视频一区二区三区| 97碰在线免费观看| 六月婷色| 另类视频在线| 激情五月深爱五月| 亚洲天天免费| 99热这里只有精品一| 婷婷五月天激情五月天| 另类综合婷婷五月天欧美视频| 激情五月天www| 激情五月天婷婷丁香 | 色婷婷五月天中文字幕| 天天搞夜夜爽夜夜爽| 五月婷婷高清| 丁香五月丁香伊人| 久久这里只| 色偷偷五月天| 思思热在线播放| 丁香六月婷婷综合| 精品一二三区久久AAA片| 任你搞免费视频观看| 久久五月天 91| 色色日本欧美| 久久亚洲婷婷| 五月丁香九九九综合| 久久久久人妻中文| 丁香五月六月综合欧美| AV人人操| 久久97久久99久久综合欧美| 99久久天堂婷婷| 欧美在线看| 丁香五月AV综合| 婷婷丁香激情| 丁香五月婷婷色偷偷| 亚洲天堂大香蕉| 婷婷综合五月| 国产99久| 91ncom.色| 五月天另类综合网| 综合婷婷五月丁香在线观看| 99色在线视频| 婷婷在线网| 五月天婷婷久草丁香| 婷婷激情伍月网| 99热这里有精品2| 色五月丁香婷婷久草| 欧美久久网| 亚洲欧洲中文日韩久久AV乱码| 人人操婷婷| 久久性操| 亚洲 五月 婷婷 成人| 991国产精选视频在线播放下载| 强伦轩人妻一区二区电影| 色色亚洲99com| 久久久久8888| 热热久久久久久久久| 亚洲 五月 婷婷 成人| 九九九九毛片| 99热在线中出| 久久久精品视频79| 亚洲狠狠干| 日本欧美成人片AAAA| 婷婷成人av| 激情文学天天| 99热这里只有精品9| 婷婷香蕉| 人人摸人人操人人爽| 美女激情婷婷| 91爱啪啪| 丁香五月综合首页| 天天日日天天| 久久婷狠狠色| 亚洲岛国电影| 婷婷丁香色五月亚洲| 99热国产免费| 欧美槡BBBB槡BBB少妇| 丁香狠狠色婷婷| 99热这里只有精品在线播放| 天天爱天天做天天操| 精品动漫 无码av| 激情五月伊人婷婷| 天天综合色丁香| 婷婷丁香五月天综合在线日韩| 久久日婷婷| 少妇激情五月婷婷| 国产熟女一区二区三区五月婷| 国产av天天插天天操天天爽| 欧洲婷婷五月天| 五月玖玖| 中文字幕久久婷九女同| 色婷婷AV五月天| 精品人妻久久久久久| 99热销国产这里有精品| 日韩在线五月天婷婷| 中文字幕按摩做爰| 亚洲色色色色色色色色色| 九九干视频| 婷婷五月欧美| 婷婷亚洲在线| 色五月激情五月| 五月婷视频久久| www.久久久久久久| 久热久操久热久草国产91| 五月天中文网| 男妓跪趴把舌头伸进我的嘴巴| 大香蕉啪啪网| 九九性爱网| 在线综合91| 色婷婷精品| 猫咪伊人AV| 婷婷性爱无码视频| 在线看的免费网站| 99色色网站| 五月婷婷成人| 播五月婷婷开心| 五月丁香| 99在线视频播放| 神马欧美精| 色五月婷婷激情基地| 色婷婷电影网| 婷婷色五月天色| 丁香久久| 久久综合婷婷五月| 五月丁香色综合| 大香蕉欧美在线| 色五月丁香婷婷久草| 中文字幕天天干| 日屌日日操日日色| 亚洲精品成人片在线播| 五月天婷婷色综合| 激情久久月| 五月天天综合| 久久精品五月天| 五月婷婷色综图片| 五月天婷婷av| 99热官网精品在线| 丁香五月激情宗合| 丁香五月电影| 婷婷五月天Av| 啪啪日本欧美| 丁香五月婷综合网| 丁香久久九九99| 九九99九九99九九99视频网| 激情五月综合网最新| 婷婷在线免费| 五月六月激情婷婷| 久久久国产精品黄毛片| 99re久热只有精品6在线直播| 北京熟妇搡BBBB搡BBBB| 五月天激情婷婷五月天久久| 色婷婷网大全在线| 天天草天天摸| 在线观看亚洲视频影院| 久9热在线视频| 久久色在线视频| 一本大道熟女人妻中文字幕在线| 五月天婷婷色播| 久久99免费视频| 日韩一级网站| 7月婷婷六月丁香| 人人插操| 热99这就是精品视频| 97在线日本| 武则天精品久久| 日韩欧美一区二区三区四区| 丁香婷婷五月色综合| 深爱五月激情| 色五月综合在线| 无码激情AAAAA片-区区| 天天摸色吧天天摸色吧| 99亚洲精美视频在线观看| 五月天激情综合网| 日日夜夜天天爽| 色吧婷婷| 国产一区二区三区影院| 久久久久人妻精选| 色婷婷综合久久久久| 天天做天天爱天天高潮| 五月色欧洲| 超碰不卡在线| 中文字幕成人| 色综合另类| 色五月天影视| 色婷小说| 久久99热这里只有精品| 天天成人丁香美女AV| 欧洲区自拍| 色五月婷婷久久| 丁香五月冃欧美| 日本人妻A片成人免费看片| 天堂成人A片永久免费网站| 丁香六月欧美| 成人五月天在线视频在线观看| 免费观看日韩成人av| 五月色丁香| 色偷偷色婷婷| 五月色婷婷亚洲 | 99综合视频在线| 欧美三级视频| 九九热精品| 色色色9| 性小说五月天| 亚洲超级碰| 八戒青柠影视剧在线观看| 182TV大香蕉| 九九视频精品视频精品| 九九九九大香蕉| 亚洲精品又粗又大又爽A片| 丁香五月婷婷大香蕉| 日韩精品色| 99re免费精品视频| 欧美日本国产| 99爱精品| 激情av在线| 性天天中文网| 激情丁香久久| 无码髙清| 在线日本www| 99超级碰免费视频| 天天色丁香| cc精品国产性传播| 欧美色图天堂网| 久久九九99桃花视频| 日日操夜夜擼| 色五月婷婷网| 97婷婷丁香| www.五月婷婷久久.com| 《诡秘之主》在线观看| 久婷婷五月天影院| 9l视频自拍九色9l黑人| 国产精品99久久久久久久女警| 久久多色| 在线视频激情网站| 婷婷五月色網站| 色狠狠综合网| 性色播| 热99久| 97在线日韩| 操操操97| 少妇人妻偷人精品无码视频新浪| 五月天精品视频| 色婷婷丁香| 99成人| 六月丁AV| 性天天中文网| 九九热手机在线视频| 啪啪干伊人婷婷| 久久五月视频| 亚韩在线视频| 另类激情码| 69综合在线| 亚洲有码在线视频| 影音先锋91男人资源在线播放| 97碰碰九九视频| 一本大道伊人AV久久综合| 丁香六月综合激情| 成人丁香五月| 夜夜干天天操| 亚洲天堂久久| 天天日天天爽| 婷婷五月天成人| 欧美Va婷色| 婷婷五月天成人网| 欧美性猛交99久久久99| 日本丁香五月| 99九无网码| 26uuu欧美| 色婷婷丁香五月| 国产97色在线| 日本操碰碰| 大香蕉久操| 97人人超| 思思精品视频| 久久性视频| 俺去也五月天婷婷| 婷婷丁香人妻天天爽| 欧美日韩成人在线| 99九九精品| 天天日日夜夜| 五月天婷婷综合色| 淫视馆av三区| 婷婷九月丁香天堂丁香天堂| 99免费在线视频| 丁香婷婷91在线观看视频| 亚洲不卡| 26UUU| 天天爽人人爽| 亚洲综合婷婷六月丁香五月| 九九热最新地址| 五月丁香婷婷爱| 色婷婷基地| 97人妻碰碰碰久久香蕉| 六月婷婷激情| 精品人妻伦九区久久AAA片| 色欲一区二区三区精品A片| 婷婷五月综合中文字幕| 操操熟女| 五月婷婷www| 久久丁香五月| site:hcxsz888.com| 激情五月色综合国产精品| 五月综合色播播丁香婷婷| 182TV大香蕉| 五月婷婷六月丁香| 一本色综合色| 变态另类色图 | 五月婷婷免费看| 51XX午夜影福利| 日韩成人免费电影| 丁香五月停停av| 色9月| 久久色五月| 99热这里只有精品热| 激情婷婷五月天| 久久这里都是精品| 九九艹女| 久久久久久97| 伊人五月天日日夜夜久久久天天| 亚洲十月婷婷综合| 丁香五月成人av| 丁香五月av| 五月精品99综合| 啊V视频在线观看| 色婷婷激情小说网| 伊人五月综合网| www.久久99| 欧美久人人| 俺也去婷婷五月天第五色| 婷婷五月精品中文字幕| 亚洲乱码在线观看| 日韩国产在线精品| 26uuu偷拍亚洲欧洲综合| 六月丁香基地| 久久性爱视频| 成功精品影院| 91久久综合亚洲噜噜成人在线| 五月婷婷色播视频| 五月天亚洲综合网| 99热精品在线| 天堂综合久| 五月天欧美 另类小说| 91丨九色丨熟女丰满| 亚洲亚洲人成综合网络| 4399人妻无码久久久| 色。 日日日| 激情综合区| 亚洲操女| 超碰色色综合| 9这里只有精品| 99视频在线| 国产午夜精品AV一区二区麻豆| www.99热精品| 伊人婷婷五月天av| 一级性爱视频| 丁香五月综合无码趴趴| 狠狠狠狠狠狠草| 亚洲成人一区| 丁香五月婷婷综合激情啪啪啪| 都市激情久久| h在线看免费版在线看| 丁香五月综合狠狠| 久久黄A片| 丁香五月婷婷偷拍| 婷婷97色| 亚洲在线激情婷婷五月| 久久婷婷丁香| 91窝窝| 森林影视大全,最好看的2019年视频 | 五月丁香婷婷伊人| 91Chinese在线| 99精品在线观看视频| 丁香狠狠色婷婷久久无码视频| 少妇性按摩无码中文A片| 激情综合网五月丁香| 亚洲热久久| 日韩在线视频9色| 婷婷激情五月天激情在线| 香蕉综合在线| 91丨九色丨老农村| 婷婷五月天狠狠| 精品一二三区久久AAA片| 丁香五月天激情婷婷丁香六月| 激情五月婷黄版| 99啪在线视频| 五月丁香欧美在线| 青青草大香| 5月丁香婷婷| 99无码| 婷婷久久五月丁香| 久久综合丁香| 国产1区2区| AV性爱在线| 啪啪视频99| 久久丁香久久| 婷婷五月丁香青青草在线| 在线色五月婷婷| 狠狠操综合| 婷婷久久五月| 九九無妻| 99er这里只有精品| 久久色婷婷| 91 九色 熟女| 热九九精品| 日韩乱轮AV| 好好干av| 九九综合影音先锋 | 熟美女麻豆| 五月综合激情综合久| 婷婷不干网| 激情五月综合| 天天综合精品| www。88热在线视频免费观看| 99色性爰网络| 99精品视频免费在线播放| 亚洲九九夜夜| 色热久资源| 激情五月婷婷| 亚洲激情五月婷婷日日| 激情五月婷婷| 婷婷天天综合| 91麻豆国产三级精品福利在线观看| 激情网五月| 五月丁香在线看| 丁香99| 丁香午夜天| 久久一伦| 棕合影院色色| 超碰超碰在线| 五月丁香在线观看| 精品在线| 思思9久久| 99热这里只有精品一区| 日韩久久欧亚| 天天干天天拍| av九九| AV性爱网| 色五月av伊人| 七七色综合| 99热精品在线在线| 婷婷伊人中文字幕| 日本人妻A片成人免费看片| 综合热无码| 97操碰在线97| 色噜噜狠狠色综合成人99| 色综合com| 五月开心播播网| 天天婷婷综合亚洲亚洲| 婷婷激情人妻| 五月婷婷大香蕉| 青青草日本亚洲| 婷婷伊人75| 色情五月婷婷| 天天色天天噜| 黄页免费一级视频懂色| 丁香婷婷大香蕉| 丁香五月自拍| 新激情五月天| 另类 在线| 欧美五月丁香在线| av操B网站| 人人干99| 夜夜夜夜做天天天做无码视频| 五月天激情网站| 五月天婷婷久久视频| 六月婷婷深深爱| 婷婷五月天国产传媒| xx久久| 这里只有精品日韩精品| 色婷婷亚洲综合av| www九九| 特级片神马电影| 97色在线视频| 任你躁XXXXX麻豆精品| 91成人看片| 狠狠va| 91婷婷色| 色欧美一级| 久久曰曰|