如何快速將多列數(shù)據(jù)轉(zhuǎn)換成多行數(shù)據(jù)

      網(wǎng)友投稿 1004 2025-04-01

      如何快速將多列數(shù)據(jù)轉(zhuǎn)換成多行數(shù)據(jù)

      在我的工作表中,同一行是某學(xué)生測試項(xiàng)目和課外興趣班的全部信息,如下圖1所示。

      圖1:在工作表“InputData”列A至列C中存儲(chǔ)學(xué)生一般信息,列D至列列W存儲(chǔ)著學(xué)生測試項(xiàng)目信息。測試項(xiàng)目信息分為“測試項(xiàng)目、測試日期、分?jǐn)?shù)、等級(jí)”列,共重復(fù)5次(即有5個(gè)測試項(xiàng)目)。

      圖2:在工作表“InputData”列X至列AI存儲(chǔ)著學(xué)生課外興趣班信息。課外興趣班信息分為“課外興趣班、頻次、持續(xù)時(shí)間、效果”列,共重復(fù)了3次。

      現(xiàn)在,要將工作表“InputData”同一行中的數(shù)據(jù)轉(zhuǎn)換成多行數(shù)據(jù),并存儲(chǔ)到工作表“OutputData”中,如下圖3所示。

      圖3:轉(zhuǎn)換成多行數(shù)據(jù)的結(jié)果。每名學(xué)生的“測試項(xiàng)目、測試日期、分?jǐn)?shù)、等級(jí)”和“課外興趣班、頻次、持續(xù)時(shí)間、效果”信息放置在不同的行中。

      可以使用VBA代碼來快速完成數(shù)據(jù)的轉(zhuǎn)換:

      ‘設(shè)置數(shù)組下標(biāo)從1開始

      Option Base 1

      ‘自定義類型

      Type student

      info() As Variant

      exam(5) As Variant

      interest(5) As Variant

      End Type

      Sub MainOutput()

      Dim wks As Worksheet

      Dim i As Long

      Dim rngInputData As Range

      ‘獲取要處理的數(shù)據(jù)區(qū)域

      Set rngInputData =Worksheets(“InputData”).Range(“A1”).CurrentRegion

      Set rngInputData = rngInputData.Offset(1,0). _

      Resize(rngInputData.Rows.Count – 1,rngInputData.Columns.Count)

      ‘調(diào)用OutputData過程處理數(shù)據(jù)

      OutputData rngInputData,Worksheets(“OutputData”).Range(“A2”)

      ‘自動(dòng)調(diào)整列寬

      Worksheets(“OutputData”).Range(“A1”).CurrentRegion.Columns.AutoFit

      End Sub

      Sub OutputData(rngSource AsRange, rngTarget As Range)

      Dim titles() As Variant

      Dim inputRows As Long

      Dim i As Long

      Dim j As Long

      Dim k As Long

      Dim stu() As student

      ‘輸出表標(biāo)題

      titles = Array(“編號(hào)”, “姓名”, “性別”, _

      “測試項(xiàng)目”, “測試日期”, “分?jǐn)?shù)”, “等級(jí)”, _

      “課外興趣班”, “頻次”, “持續(xù)時(shí)間”, “效果”)

      ‘獲取輸入數(shù)據(jù)行數(shù)并定義數(shù)組大小

      inputRows = rngSource.Rows.Count

      ReDim stu(inputRows)

      ‘遍歷輸入數(shù)據(jù)

      For i = 1 To inputRows

      ‘依次將相應(yīng)數(shù)據(jù)存放在數(shù)組中

      With stu(i)

      k = 4

      ‘存儲(chǔ)前3列數(shù)據(jù)

      .info = Range(rngSource.Item(i, 1),rngSource.Item(i, 3))

      ‘存儲(chǔ)后面重復(fù)標(biāo)題相應(yīng)的數(shù)據(jù)

      For j = 1 To 5

      .exam(j) =Range(rngSource.Item(i, k), rngSource.Item(i, k + 3)).Value

      .interest(j) =Range(rngSource.Item(i, k + 20), rngSource.Item(i, k + 23)).Value

      k = k + 4

      Next j

      End With

      Next i

      ‘清空放置數(shù)據(jù)的工作表

      rngTarget.CurrentRegion.ClearContents

      ‘輸入標(biāo)題

      rngTarget.Offset(-1, 0).Resize(1, 11).Value= titles

      k = -1

      ‘輸入數(shù)據(jù)

      For i = 1 To inputRows

      For j = 1 To 5

      With stu(i)

      If .exam(j)(1, 1) <>”” Or .interest(j)(1, 1) <> “” Then

      k = k + 1

      rngTarget.Offset(k,0).Resize(1, 3).Value = .info

      rngTarget.Offset(k,3).Resize(1, 4).Value = .exam(j)

      rngTarget.Offset(k, 7).Resize(1,4).Value = .interest(j)

      Else

      Exit For

      End If

      End With

      Next j

      Next i

      End Sub

      上述代碼中使用了一些注釋,方便閱讀和理解。要說明的是,代碼使用了自定義類型,很清楚地存儲(chǔ)不同用途的數(shù)據(jù),并能夠很方便地調(diào)用,這是一個(gè)很好的技巧。

      此外,本示例再次表明,針對特定的數(shù)據(jù)整理需求,使用一些VBA代碼,就可快速達(dá)到目的,省去了重復(fù)操作的繁雜和易出錯(cuò)的煩惱。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:計(jì)算機(jī)處理訂單處理流程(訂單處理程序
      下一篇:獲獎(jiǎng)公告】速來領(lǐng)獎(jiǎng)!“玩轉(zhuǎn)華為云,博出你的Free Style”征文大賽獲獎(jiǎng)公布~~
      相關(guān)文章
      在线A亚洲老鸭窝天堂| AV在线亚洲男人的天堂| 亚洲免费视频网站| 亚洲精品成人片在线播放| 最新亚洲成av人免费看| 亚洲国产成人久久综合野外| 精品无码专区亚洲| 亚洲Av永久无码精品黑人| 亚洲美国产亚洲AV| 亚洲国产精品嫩草影院| 亚洲国产精品无码久久九九大片| 亚洲AV无码精品蜜桃| 亚洲人成电影青青在线播放| 亚洲国产成人久久77| 亚洲av极品无码专区在线观看| 亚洲午夜精品国产电影在线观看| 亚洲人色大成年网站在线观看| 91午夜精品亚洲一区二区三区| 亚洲性色高清完整版在线观看| 亚洲国产一区在线观看| 亚洲an日韩专区在线| 国产亚洲精品VA片在线播放| 亚洲熟妇无码av另类vr影视| 亚洲AV日韩AV一区二区三曲| 小说区亚洲自拍另类| 亚洲精品久久久www| 国产亚洲色婷婷久久99精品91| 亚洲日韩中文无码久久| 亚洲AV综合色区无码另类小说 | 亚洲国产a∨无码中文777| 国产亚洲一区二区精品| 亚洲精品无码不卡| 亚洲大香人伊一本线| 香蕉大伊亚洲人在线观看| 亚洲精品9999久久久久无码| 全亚洲最新黄色特级网站 | 亚洲精品偷拍无码不卡av| 亚洲av无码一区二区三区天堂古代 | 亚洲精品福利网泷泽萝拉| 亚洲免费电影网站| 亚洲精品天堂无码中文字幕|