免费国产精品自在自线-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
返回資訊列表
亚洲综合碰| 四虎成人精品永久免费AV九九| 婷婷激情六月天视频| 三级99热| 亚洲成人影视在线| www.超碰在线| 99久久久久| 丁香激情六月天婷婷| 人妻激情网| 免费视频99| 激情五月四色| caopeng97日韩| 九色七七| 综合色吧| 热99久| 99热激情| 亚洲成人在线播放| 99热人人| 色五月婷婷大香蕉| 99热这里只有精品在线观看| 第四色首页| 男人的天堂999| 亚洲天堂九九九| 午夜天堂啪啪| 久久曰曰| 激情五月婷婷| 狠狠精品干练久久久无码中文字幕| 狠狠色丁香| 婷婷五月丁香在线观看| 亚洲成人色五月婷婷综合| 人人97操| 99视频在线看| 九九色天堂| 少妇2做爰HD韩国电影| 狠狠色狠狠| 天天插AV丝袜中| 99在线观看精彩视频| 视频1区2区| 色yeye欧美| a性生活久久无| 99re在线观看| 亚洲中文字幕AV在线| 色狠狠综合| 婷婷色色丁香五月天| 色五月综合网| 色五月激情婷婷| 婷婷 亚洲图片 丁香| 丁香综合网| 97久久五月丁香婷婷| 伊人久久大香线蕉亚洲五月天,| 欧美电影在线播放| 淫视馆av三区| 丁香五月激情啪| 色99婷婷五月天| ww超碰在线| 五月停视频天堂| 婷婷色五月综合丁香| 婷婷五月综激情| 亚洲操B视频| 婷婷99丁香| 婷婷五月激情在线| 9精品视频在线观看| 天天综合色丁香| 久久六月综合| 欧美精品999| 久操人妻| 日韩人妻操逼视频| 桃色五月天| 婷婷五月天电影网| 天天爱天天操| 五月婷色丁香| 婷婷五月天最新综合你懂的 | 久久深爱激情网| 色操b| 任你干嘛免费视频播放| 婷婷五月天久久综合88| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 亚洲AV成人在线观看| 丁香婷婷六月| 草草操操| 色综合综合网| 99久.| 久热这里| 91久久色| 天天色,天天操,天天射| 97碰碰视频| 天天射综合网站| 久久综合99| 国产日韩欧美| 狠狠狠狠狠狠色| 香蕉久久国产AV一区二区| 五月丁香久久精品在线观看| 久久婷婷成人综合色怡春院| 夜夜操狠狠操| 久久作爱| 五月天天天色| 欧美大肥婆大肥BBBBB| 嫩草视频。| www狠狠| 99热只有精品在线观看| 五月婷婷在线视频| 五月丁香色综合| 99精品视频在线6| 情婷婷五月天| 嫩BBB搡BBBB榛BBBB| 91超级碰人人操| 婷婷天堂站| 日日操,夜夜爽| 色婷六月| www. 五月. com| 一级片sese片.COM| 色婷婷A| 婷婷丁香无码专区| 天天日狠狠| 26uuu成人网| 五月婷婷久久综合| 日本3级片偷拍网站| 久人人操| 99亚洲视频| 五月婷婷色| 五月天另类小说| 久久婷婷伊人| 99热这里在线精品| 91在线日| 色情五月天丁香社区| 二人电影免费版在线观看| 久久激情五月| 丁香六月色| 77799热| 综合网啪| 欧美色97| www.henhenl| 影音先锋男人AV资源站| 狠狠狠狠狠草| 欧美性爱丁香五月| 可以直接看的AV网站| 五月天综合| 丁香伊人网| 亚洲欧美国产高清vA在线播放| 婷婷色色五月天| av九九| 中文久久婷婷| 五月丁香色婷婷色| 六月婷婷激情图片| 在线播放成人网站| 色五月激情网| 玖玖资源部在线播放| 99精品热| 欧美综合激情五月丁香| 碰97 久| 99热网站在线观看| 色欲色欲久久宗合网| 再次出发二| 人人摸人人搞| 九九热再线九九视频免费在线观看| 九九综合伊人| 思思视频久久| 国产五月视频| 婷婷五月色播放| 四色五月婷婷| 久婷五月| 天天狠天天狠| 牛牛热这里只有jingpin| 五月婷婷六月丁| 这里有精品| 婷婷丁香69精华| 天天干 夜夜爽| 久久99视频| 五月天堂色| 五月婷婷啪啪啪| 国产免费AV在线| 在线另类视频| 亚洲激情av| 操笔无码| 超碰99成人在线| 欧美婷婷五月丁香| 二色av| 久久五月丁香| 丁香六月伊人| 婷婷五月丁香久久| 精品人妻伦九区久久AAA片| 色五月婷婷开心| 色狠狠婷婷| 丁香六月色婷婷| 午夜色丁香| 日熟女| 久久99精品九九久久久婷婷| 婷婷5月久久综合网站| 欧美日韩AAAA| 99色在线观看免费| 色99超碰| 五月激情综合网| 午夜婷婷六月天| 婷婷五月丁香欧洲| 国产看真人毛片爱做A片| 99热99热| 丁香五月天激情网址| 亚洲妇女熟BBW| 亚洲热视频| 婷婷丁香人妻天久久| 国产精品扒开腿做爽爽爽A片唱戏| 久久机热这里只有| 久99视频| 五月丁香婷婷婷激情爱爱| 人人爽天天爽| 激情五月色婷婷| 熟女色专区| www.com久久久久久久久久久久久久久久久| 夜夜夜夜夜骑撸| 日韩黄黄| 九9九9无码| AA片在线观看视频在线播放| 人人操97| 丁香五月五月婷婷| 婷婷综合六| 婷婷五月AV| 香蕉影院色| 婷婷五月天影院| 久久精品永久免费| 综合xx网| 99视频超级精品| 激情文学 综合 九月| 婷婷亚洲综合| 日韩成人综合网| 26uuu亚洲欧美日本| 如何安全看伊人婷婷| 色444综合网| www.色婷婷| 丁香五月婷婷激情尤物| 色五月婷婷五月| 开心婷婷五月花| 色综合中文色综合网| 婷婷丁香无码专区| 天天揷综合网| 影音先锋日本三级资源| 狠狠干综合| 日韩操人| 狠狠干夜夜干| 亚洲午夜AV| 97精品欧美91久久久久久久| 婷婷五月天福利| 五月丁香青草综合啪啪| 第一区久久网站| 第四色五月激情网| 日本丁香五月婷婷| 3p日韩网站视频| 久久免费精品小视频| 欧美日本国产欧美日本韩国99| 精品自拍99| 性做爰A片免费视频A片直播 | 五月情色天| 婷婷狠狠五月综合| 台湾佬天天日丁香婷婷五月天| www久久99com| 日日色五月天| 五月天五月婷五月激情网| 26uuu.| 亚洲精品色色| 五月色丁香婷婷中文字幕| 玖玖资源站国产| 五月丁香香蕉| 色五月婷婷五月丁香五月激情五月视频| 综激情网| 六月综和久久| 五月丁香激情在线| 这里只有精品免费| 日本啪啪网| enecarbon-materials.com污K127封锁请涟系@wip1688 | 91男人资源站| 丁香五月777| 97人妻碰碰碰久久| 色婷婷99| 中文字幕簧片| 久久精品性爱| 精品久久久人妻| 五月开心激情| 玖玖99婷婷| 丁香婷婷AV| 色亭亭丁香五月天| 91无码视频| 婷婷啪啪| 欧美婷婷五月| 成人网站免费在线播放| 久操热| 日99网站| 久人操| 99热都是精品| 99re在线这里只有精品视频首页| 99热日| 综合色色色| 99色在线| 九九九九九九毛片| 99re这里只有精品国产99| 成人欧美Va| 亚洲视色| AA丁香综合激情| 夜色五月天| 996精品热视频| 人妻久久久久久久久妻久久久久久久久| 综合亚洲五月天| 亚洲婷婷激情888精品久| 亚洲成人人人操| 伊人久久大香网| 伊人综合网站| 综激情网| 欧美婷婷精品激情| 婷婷五月在线视频| 在线中文亚洲| 五月丁香激情六月| 99这里只有精品| 色综啪啪| 五月丁香va| 综合图片色色| 超碰只有精品在线| 狠狠干狠狠色| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 五月婷婷色综图片| Www.se.久久| 我爱大香蕉| www.狠狠干com| caop在线视频| 大香蕉狠狠爱主页| 婷婷香五月| 色欲婷婷五月天| 操人妻AV| 99久久99热| 日日撸夜夜操| 99精彩视频在线观看| 五月香婷婷| 亚艹艹| 婷婷五月天小说| 日韩在线观看亚洲| 人人草人| 怡春院天天干| 五月婷婷色吧!| 久热免费| 天天五月香欧美| 久久性爱视频| 十区av| 色五婷婷| 五月婷综合网| 精品一区二区三区四区五区六区| 香蕉综合网| 亚洲色网址| 大香焦啪啪啪| 五月婷婷六月爱| 一级性爱视频| 婷婷五月天激情网| 婷婷色五月天在线| 九九99在线免费在线观看视频| 无套内射极品大美女| 超碰97在线观看免费| 蜜乳.comcom| 无码色色色| 大香蕉婷婷丁香视频在线| 激情五月天偷拍综合网| 六月婷基地| 26uuu国产| 99热色综合| 五月丁香色婷婷综合| 极品人妻VIDEOSSS人妻| 婷婷六月天激情影院| 99热只有| 99热精品一| 国产精产国品一二三在观看| 色婷婷五月亚洲| 久热一区| 激情五月视频在线婷婷| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 五月婷婷免费视频| 97碰碰免费.视频| 五月丁香久久丝袜啪啪| 青青草婷婷久久| 天天色视频| 欧美三级级99久久| www.婷婷亚洲基地| 夜夜骑日日操| 一本久久婷婷| 狠狠操天天干| 久久激情视频99| 99∨VTV| av婷婷丁香 六月| 欧美日韩成人| 无码任你操| 99五月婷| 大香蕉人妻| 另类图片五月天婷婷| 亚洲精品字幕| 天天干一干| 99色干| 丁香六月综合激情| 亚洲aV写真天天综合网久久 | AV在线观看网站| 婷婷大香蕉| 亚洲久久视频| 久久网址99热| 六月丁香久久| 这里只有精品在线视频在线观看| 激情综合色| XX色综合| 99热主页日本| 激情五月天www| 91人操| 欧美精品XXXXBBBB| 五月天久久综合婷婷| 色999五月色| 婷婷丁香五月天综合在线日韩| 丁香色五月天| a69在线视频| www色哟哟| 午夜一区| 色播五月| 天天插天天日天天爽| 亚洲精品成人片在线播| 鲁鲁色五月| 中文字幕丰满人妻无码专区| 涩涩婷婷五月| 99久久久国产大片区| 五月婷狠狠| 五月婷婷综合网| 亚洲精品五月| 五月天伊人av| 在线中文字幕av| 在线观看免费观看在线9久| 亚洲激情网| 丁香婷婷丁香五月欧美人| 日韩操啪| 丁香六月婷婷激情| 91超级碰碰碰| 欧美97色| 色五月婷婷亚洲最大| 婷婷狠狠久久| 六月婷婷五月丁香首页| 狠狠人妻色综合| 99在线视频操999| 五月色婷婷综合| 激情五月天激情五月天| 天天狠狠色综合| 色 免费网站视频| 亚洲成片在线观看| 97日日碰碰| 内射人妻视频国内| 狠狠色婷婷| 大香蕉av在线| 亚洲成人免费电影| 激情色播| 超碰在线人妻| 99热这里只有精品1025| 色婷婷免费视频| 51avj视频大全| 五月天婷婷激情干干| 国产99久久久| 丁香六月啪| 91啪啪网| 色综合天堂| 激情性爱网站| 婷婷五月网图片区| 丁香久久综合| 97碰| 色狠狠999综合网| 久热大香蕉| 日韩啪| 激情久久久久久久久| 久久色午夜在线导航| 91女人18毛片水多国产| 91五月花丁香| 91好好热日本在线| 97碰碰人人| 九色视频91| 久久综合激情| 丁香五月日啪| 五月天俺去也| 极品另类| 第五色婷婷| 色婷婷在线视频| 99视频只有精品| 九九成人视频| 99@久久@99精品视频| 亚洲中文字幕翔田千里| 婷婷激情综合色五月久久图片| 天天综合网~91| 色哟哟性爱av| 天天草人人摸| 丁香五月天在线| 五月婷婷亚洲色视频| 国产激情在线| www.狠狠操| 婷婷丁香五月天综合在线日韩| 色色婷婷综合| 激情四射婷婷| 先锋男人99资源| 婷婷五月天日本无码| 99热这里有精品| 午夜丁香婷婷| a性生活久久无| 成人免费在线电影| 天天日日夜夜| 丁香五月天成人| 年轻的妺妺伦理HD中文| 天堂五月婷婷| 婷婷五月天基地| 96丁香婷婷九月蜜桃综合久久| 91碰操| 超碰色综合| 色婷婷在线视频久| 婷婷婷婷婷婷婷婷| 极品人妻XXXXOOOO| 91九色国产熟女| 五月色婷婷综合色| 五月丁香在线观看| 成人做爰高潮A片免费视频| 久久久潮喷-久久久九九-成人AV| 九月婷婷久久| 五月五婷婷| 激情五月丁香五月| 在线不卡的视频| 日本欧美在线| 亚洲va在线∨a天堂va欧美va| 狠狠色狠狠| 狠狠操综合| 欧美婷婷丁香五月| 色五月之第四色| 激情五月天www| 成人精品在线观看| 伊人影院久久网| 久久综合这里只有精品1| 日日操日日射| 天天插天天插天天插天天插| 免费AV在线网址| 久色视频在线| 色色五月婷婷久久| 五月情婷婷| 五月激情六月综合| 亚洲欧洲小视频9| 99精品视频在线免费观看| 日日爱699| 99色色网| 999婷婷综合| 男女久久婷婷五月天| 亚洲六月婷婷| 丁香五月婷婷激情尤物| 久热这里精品免费| 91狠狠综合久久久| 国产av基地| 99免费在线| 午夜少妇在线观看视频| www.精品99| 五月六月婷| 日韩无码专区| 五月婷五月婷伊人伊人五月婷| 狠狠干婷婷| 91无码色色| 玖玖视频福利| 丁香五月六月综合激情| 成人丁香色| 99精品免费欧美小视频 | 九九九九毛片| 五月天激情网图片| 精品一二三区久久AAA片| 婷婷五月成人| 亚洲综合色色| 久久婷综合| 这里只有精品久久| 在线成人av播放| 五区毛片七区毛片| 性爱激情综合网| 亚色网站小视频| 99无码视频| 99热九九这里只有精品| 国产99久久久| 看婷婷五月天网| 婷婷久久五月丁香| 大香蕉九九| www.黄色片-久久成人国产精品在线播放-999AV| www.99色在线| 九九色热| 亚洲啪啪网| 精品爆操| 亚洲色9| 九九99精品| 任你日视频| 亚洲成人在线播放| 久久久色婷婷五月天| 亚洲另类电影| 日韩激情婷婷五月天| 国产67194| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 国产精品扒开腿做爽爽爽A片唱戏 青青草国产亚洲精品久久 | 久久久久9999| 久久怡红院| 婷婷五月天少妇| 国产精品18久久久| 天天色天天噜| 丁香五月天激情四射网| 婷婷午夜精品久久久| 天天操天天爱天天日| 六月婷婷综合| 小视频一区| 久草婷婷视频| 97婷婷狠狠| www久| 亚洲情综合五月天| 五月婷婷啪| 久久激情五月婷婷| 欧美电影在线播放| 天天插插天天| 97色色-99久久| 亚洲亚洲人成综合网络| 色深爱五月| 99热婷婷| 日本性视频| 久久综合丁香| 99这里的视频都是精品| 中文字幕操比影片| 开心激情五月天网| 六月狠狠综合| 综合亚洲六月婷婷在线| 99丁香五月| 亚洲色热| 综合性视频99| 五月丁香久久呀| 婷婷成人基地| 综合伊人久久| 婷婷五月天激情偷拍| 2013AV天堂| 五月综合久久| 99精品在这里| 婷婷五月丁香激情色情| 超碰在线综合| 色爱爱综合网| 婷婷丁香人妻天天爽| 天天爽综合| 26UUU| 狠狠色婷婷综合开心影视| 婷婷社区五月天| 久久精品亚洲一级牲爱综合| 久久综合性| 一区二区aV电影免费看| 久热99| 色婷五月天| 99热在线观看精品免费| 激情深爱婷婷网| 热99精品视频五月| 色噜噜狠狠狠狠色综合久欧美| www夜夜操| 天天日夜夜拍| 欧美性丁香色色五月天综合爱爱| 亚洲中文字幕av| 玖玖热99| 99热这里只有精品2| 久久99网| 婷婷五月天成人网站| 色亚洲中文| 情色五月天网站| 九九99久久精品| 色999五月色| 婷婷久久五月天丁香| 91精品综合久久久久久五月丁香| 婷婷五月天,影院| 大香蕉Av在线| 五月婷婷色啪| 一区二区传媒视频| 日本三级片片| 丁香婷婷久| 大香蕉在线99热| 最近韩国日本免费高清观看| 五月婷婷六月丁香| 丁香五月天啪啪| 人人干99| 超碰免费人妻| 玖玖色综合网| 五月天天堂久久| av在线激情| 五月婷激情影院| 香蕉网久久| 9一精品视频观看| 在线免费视频caop| 九月婷婷人人操人人舔人人爱| 亚洲字幕AV一区二区三区四区| www.婷婷| 国外亚洲成AV人片在线观看 | 亚洲色婷婷五月| 青青草护士中出内射-欧美电影在线天堂新版| 五月天天天综合| 午夜丁香丁香婷婷| 久热91| 丁香五月天欧洲在线| 五月丁香啪啪网| 久这里只有精品| 亚洲久久视频| 色婷婷丁香五月综合| 天天精品视频在线观看视频| 激情网婷婷婷| 五月丁香啪| 婷婷婷久久久| 思思热在线精品视频| 深爱五月婷婷| 国产真人做爰视频免费| 久久33视频| 亚洲视频无| 婷婷色情网| 人人干人人干骚美女| 亚洲看av的网站| 99热这里只有精品最新网址| 欧美色色色色色| 特黄三级片| 婷婷五月色| 日本婷婷激情四射中文字幕在线观看| 欧美日韩国产一二区| 五月99久久| 天天肏视频| 婷婷欧美偷拍综合| 婷婷五月天激情基地| 丁香五月婷婷AV在线| 九九热这里只有精品6| 成人做爰高潮A片免费视频| 婷婷五月在线影院| 欧美精产国品一二三区| 丁香五月六月久久综合 | 激情综合女人网五月播播| 色色色色色色97| 亭亭五月丁香五月天激情| 97久久久久| 99se丁香| Av九九| 99热这里有精品2| 七七色色综合| 国产XXXX搡XXXXX搡麻豆| 日韩 mm 不卡| 99热这里只有99| 五月天婷婷综合免费| 天天精品视频免费观看| 99啪视频在线观看| 色婷婷五月天亚洲| 天堂综合久久| 爽tv | 1234操逼网| 婷婷瑟五月天久久综合| 亚洲综合在线播放| 日本道久久91| 少妇丁香婷婷 | 噜噜狠狠色综合久| AV国产有码| 亚洲成人在线免费| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 婷婷深爱五月| 日本欧特黄色刺激一区影视久精品无码| 五月婷婷五月丁香综合| 大婷婷色呦呦噜噜色呦呦噜噜| 丁香五月花| 成人短视频在线| 91精品久久久久、久五月天| 熟妇无码乱子成人精品| 五月婷婷啪啪网| 99热激情| 久久9情免费| 人人色性网| 久久 婷婷 五月天| 99精品高潮| 亚洲va欧美va国产综合久久久| 伊人激情影院| 婷婷大乡焦噜噜| 夜夜操激情| 色婷婷呢狠禁久禁| 婷婷五月成年人| 色激情五月| www.99操.com| 久久人妻情侣| 国产乱妇乱子在线播视频播放网站| 久久性操| 色情五月综合婷婷| 亚洲人妻Av| 久久婷婷五月天激情| 人操91在线| 99视频这里有精品免费观看| av操逼网| 久久婷婷色五月| 成人做爰黄A片免费看直播室男男| 久久99最新| 激情综合婷婷| 久久五月视频| 精品一二三区久久AAA片| 久久婷婷色| 日韩AAAAA| 99色色爰| 久久怡红院| 久久er免费视频| 激情小说五月天| 天堂AV三级| 亚洲成人在线播放| 成人深爱丁香五月| 女人被躁到高潮嗷嗷叫小| 亚洲色五月天是什么| 五月婷婷色播| 天天日,夜夜爽| 黄色国久久| 五月婷婷丁香在线| 激情五月婷婷啪啪| 99视频久久| 久久99久久99精品免视看婷婷| 开心激情婷婷| 天天婷婷天天| 在线五月婷| 五月婷婷六月丁香综合| 亚卅毛片| 综合五月婷婷| 激情五月色综合国产精品| 中文字幕中文有码在线| 久久婷婷成人综合色怡春院| 婷婷五月天午夜激情影院| 久久婷婷亚洲| 久久综合这里只有精品1 | 思思热99er| 天天日天天舔| 色婷婷97| 丁香六月婷婷缴情欧美| 激情小说视频图片| 99精品久久久久| 五月婷婷天| 九九成人高清视频| 色yeye色综合| 久久久久婷婷| 五月天四色房丁香| 九月婷婷在线观看| 99精在线| 狠狠干五码| 狠狠第四色| 99久在线精品99re8热| 99思思热只有在这里看| 五月婷婷|欧美| 日本人妻伦在线中文字幕| 亚洲色综久久五月| 欧美日朝成人| 亚洲五月六月婷婷| 六月激情婷婷| 久色网五月| 99操中文视频| 婷婷色五月综合| 日韩啪啪视频| 青青草视频福利| 超碰成人免费| 色色网站日本91| 天天噜噜| 99性视频| 色婷婷成人影片| 久久五月天免费网站| 性爱视频久久| 久久人妻精品| 五月婷婷免费| 五月天开心色情网| 婷婷五月天丁香久久| 99爱在线精品视频免费观看| 性色五月天| 激情综合五月色在线| 久99久在线观看| www五月婷婷88导航| 丁香六月五月天| 婷婷性爱五月天| 美女主播野战视步页| 五月丁香好婷婷A片网| 色五月激情综合网| 可以免费观看的AV| 狠狠操狠狠狠| 五月天婷婷自拍图片在线观看| 久久女人九九| 色色五月天 亚洲| 九九热在线精品| 久9久成人精品视频| 色婷五月天网站| 国产xxxxx在线观看| 99玖玖人人| 665566 无码| 五月综合激情| 色久天| 激情视频综合| 99热思思| 能直接看的AV网站| w婷婷五月婷婷w| 婷五月天在线草| 日本九九九九| 无码激情| 婷婷五月电影| WWW99热| 九月婷婷综合网| 免费在线a| av网站免费在线| 久婷婷视平| 无码少妇高潮喷水A片免费| 九九热在线观看视频| 久久久性爱视频| 色五月五月婷婷| 99这里| 五月丁香啪啪| 日韩色五月| 精a品a| 日日爽日日爽| 久久激情五月婷婷| 色五月丁香网| 五月丁香成人网| 五月天婷婷在线AN| 天天操天天干天天日| 婷婷激情五月天激情| 婷婷五月色情天| 激情五月综合网最新| 六月婷婷久久| 99热在这里只有精品| 99激情视频| 久久久噜噜噜久久人妻| 五月天婷婷激情| 六月丁香五月婷婷| 五月婷婷av| 97五月天| 五月丁香综合| www天堂99| 日本偷拍九九九| 久碰综合| 九九热10| 五月婷婷内射网| 少妇激情五月婷婷| 99综合激情久久精品久久| 久久婷婷五月综合啪| 五月丁香六月婷婷姐| 狠狠操天天干| 色婷婷综合网| 99网| 国产44页| 九九伊人网| 欧美色狠婷久| 天天爱天天做天天爽| 婷婷五月天电影在线| 五月天.com| 另类小说五月天| 深爱激情五月天| 二区成人视频| 91久久精品无码一区二区三区| 久久五月天婷婷视频| 就爱干 在线| 激情五月婷婷视频一区二区三区| 婷婷激情视频| 天天射影院| 久久婷婷青青| 爱操人妻| 欧洲第一久色| 五月激情网站| 人妻丰满精品一区二区A片| 内射 无码 伊人| 久婷| 婷婷 亚洲图片 丁香| www.天天干| 久久精彩视频| 男人天堂AV在线一区二区| 97超喷视频在线观看| 丁香五月色| 五月天天爽| 九九热99热| 成人视频免费观看高清完整版在线观看| 射区导航| 99亚洲色| 四色永久成人网站| 欧美久久久中文字幕| 亚洲综合视频网| 天天干天天色天天干| 婷婷欧美激情| 天天日夜夜| 伊人色综合影院视频| 五月婷丁香在线视频在线| 色老久久| 色婷青青| 久久亚洲A| 丁香午夜天| 逼特逼在线免费播放| 久9热视频在线观看| 无月播播激情在线观看视频| 这里只有精品视频| 亚洲AV永久无码影院黑人 | 婷婷五月天av| 99亚洲精品视频| 五月激情婷婷女| 思思热这里只有精品| 人人插9| 婷婷六月久久| 九九黄色网| 黄网在线播放| 夜夜夜夜夜骑撸| 4438亚洲欧美| 天天干,天天舔| www.99热在线观看| 精品热九九| 久热最新视频| 激情五月天综合网| 色原狠狠综合| AV五月婷婷露脸| 性做久久久久久久免费看 | 人人97碰| 久99热在线观看| 97在线视频 欧美| 丁香婷婷人妻综合网| 中文字幕在线日亚洲9| 99热综合色图| 色噜噜狠噜噜视频| 色色色色色色色五月| 99在线国| 久久六月婷婷| 蜜乳A√| 国产无套精品一区二区| VA日本视频| 久久婷婷热| 97超碰综合| 久久三级视频| 丁香五月综合高清在线| 91色综合网| 成人欧美日韩| 日本WWW九九九| 综合激情肏逼网| 免费观看欧美成人AA片爱我多深| 少妇熟女视频一区二区三区| 天天舔天天摸天天射| 婷婷五月激情中文字幕| 五月天天丁香婷婷在线中| 97干在线| 五月婷婷五月丁香综合| 亚洲色夜| www,久久久| 狠狠干天天日| 五月丁香久久精品在线观看 | 成人片在线免费看| 激情五月天社区| 五月丁香花视频| 久99久在线观看| 久久草大香蕉| 深爱激情五月网| 色婷婷六月激情| 嫩草AV久久伊人妇女超级A| 婷婷欧美色| 秋霞少妇AV网站| 丁香五月婷婷欧美成人色图| 久久青草国| 亚洲成人五月| 国产91视频| 国产精品18久久久| 激情五月婷婷啪啪| 五月丁香六月婷婷激情四射| 色欲一二三| 91婷婷丁香| 嫩草AV久久伊人妇女超级A| 日本五月丁香| 婷婷丁香黄色| 亚洲精品在线视频| 99热99网| 久久婷五月影院| 色五月成人| 思思久久99热| 免费观看欧美成人AA片爱我多深| 国产精品热搜丁香五月婷婷| 91色在线| 丁香六月婷婷久久综合| 欧美激情-区二区三区| 99色.com| 婷婷大香蕉| 亚洲视频伍月婷婷| 五月婷婷亚洲| 免费三级黄色| 九九这里有精品| 欧美欧盟性爱网| 丁香影院五月综合| 婷婷欧美综合| 色色aⅤ網| 99综合熟女| 第九色区av天堂| 网站免费一站二站| 综合亚洲色色| 丁香激情五月少妇| 婷婷五月av| 丁香六月色婷婷| 狠狠看狠狠| 五月激情综合婷婷| 夜夜爽天天爽| 五月欧美丁香在线观看| 天天弄天天爽| 天天综合 99久久婷婷| 99精品无码| 日本高清久| 婷婷五月色综合| 五月天成人综合| 成人AV片播放| 色久综合| www.久热| 99热只有精品在线观看| 91色综合网| 日本97在线看片| 久久伊人大香蕉| 日日噜狠狠色综合久| 激情合网婷婷| 热99国产精品| 色综合久久88色综合天天| 亚洲精品99| 天天干,夜夜爽| 99热在线观看这里只有精品| 夜夜爽天天| 九9九9无码| 玖玖@三月天天丁香婷婷| 久久精彩免费视频| 欧美激情五月天| 久久婷婷五月综合色和| 婷婷丁香77777| 婷婷伊人网| 亚洲操B视频| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 男人的天堂99| 最近中文字幕在线中文视频| 综合久久婷婷| 激情久久肏屄视频| 婷婷五月天开心激情网| 五月开心婷婷| 激情婷婷丁香色五月综合| 激情久久肏屄视频| 九九 激情 网| 丁香亚洲色综合| 婷婷丁香激情五月天色色色| 欧美丰满熟妇BBB久久久| 亚洲AV成人在线| 91精品无码| 在线观看的av| 欧洲色| 色色色综合| 五月天激情国产综合婷婷婷| 激情婷婷综合五月少妇| 狠狠狠狠狠草| 丁香五月综合激情性爱| 97天堂| 激情综合网五月天| 97视频91| 婷婷色网站| 婷婷精品视频| 99热国内精品| 五月婷婷色影院| 久久新地址| 超碰免费99| 性一交一乱一交A片久久四色| 五月成人综合| 99精色| 欧洲色色| 亚洲成人中心| 久久9久| 999热这里只有精品| 日本色色色| 狠狠操天天干| 成人国产欧美大片一区| 图片区 小说区 区 亚洲五月| 亚洲乱码日产精品BD| 日本女色人人| 久久久天堂国产精品女人| 日韩日比视频在线| 激情五月天婷婷色色色色色色色色色色色| 天堂久久久久天堂网| 婷婷五月激情视频网| 秋霞日本免费毛片A片| 99啪啪网| 久思思热视频在线观看| AV美美午夜| 涩涩婷婷五月| 99视频这里有精品| 操97| 色噜噜婷婷| 五月婷婷碰碰| 99久久视频| 婷婷五月天综合网| 思思99热在线| 女人天堂 AV| 婷婷五月色天| 色色色综合色| 国产精品电| 9 9热这里有精品| 91热在线| 婷婷丁香视频| 激情丁香六月| 五月丁香啪啪网| 日产精品一线二线三线芒果| 九月丁香婷婷网| www九九| 天天操夜夜玩!| 另类小说激情五月天| 99色天堂| www,99热在线观看| 欧美色碰| 国产阿姨日皮艹逼内射视频| 五月婷婷中文字幕| 色五月成人| 九九爱激情| 99人妻碰碰碰久久久久禁片| 五月婷婷五月丁香综合| 天天狠狠夜夜狠狠2023| 久热91| 97婷婷丁香五月综合| 丁香五月1页| 婷婷丁香五月高清| 可以免费观看的AV| 久久成人亚洲欧美电影| 久久机热/这里只有精品| 婷婷丁香五月久久| 免费精品99| 开心五月深爱五月| 热婷婷av| 丁香五月天激情婷婷丁香六月| 婷婷六月伊人| 26uuu国产| 亚洲AVDVD| 日日日日做夜夜夜夜无码| 久热这里只有精品6| 午夜天堂一区人妻| 婷婷综合网性| 翔田千里无码| 99在线小视频| 六月婷婷综合网2| 色婷婷免费观看| 六月合五月婷| 国产又色又爽又黄又免费| 琪琪色影音先锋| 久久99热精品a片在线观看| 夜夜撸天天操| 91九色成人原创视频| 婷婷五月天成人动漫 | 久久久久久久久月丁| 超碰久热| 秋霞AV淫| www,setingting| 午夜美女人啪最红院| 婷婷99狠狠躁天天| 久久久久久久,99精品视频| 激情综合网,五月| 九九精品热| 亚洲丁香花五月丁香花| 91狠狠综合久久久| 激情综合网五月天| 艳妇野外情欲放荡HD| 超碰狠狠操| 丁香婷婷性久久| 婷婷丁香色女人| 亚洲婷婷月丁香五月| 久久精品婷婷| 97欧美在线| 天天影视天天爽天天草| 久草 tingting| 五月激情婷婷色| 午夜少妇在线观看视频| 伊人婷婷青青cao| 五月婷婷色| 伊人天堂婷婷| 日韩十国产极品久久| www五月婷婷| 26uuu.| 婷婷色色五月| 99在线观看这里都是精品| 夜夜爽天天爽| 成人亚洲精品| 91色涩| 色色草97| 欧美色色色| 思思精品视频| 欧美日韩123| 五月激情综合网| 五月婷婷偷拍| 激情五月综合网| 久久久久久久97| 九九99免费理论| 丁香五月成人|