第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用VBA在Excel中融化/重塑?

使用VBA在Excel中融化/重塑?

吃雞游戲 2019-12-02 11:06:23
我目前正在適應(yīng)新工作,我與同事共享的大部分工作都是通過MS Excel。我經(jīng)常使用數(shù)據(jù)透視表,因此需要“堆疊的”數(shù)據(jù),恰恰是我依賴R melt()的reshape(reshape2)包中函數(shù)的輸出。誰能讓我開始使用VBA宏來完成此任務(wù),或者已經(jīng)存在?宏的輪廓為:在Excel工作簿中選擇一個(gè)單元格區(qū)域。啟動(dòng)“融化”宏。宏將創(chuàng)建一個(gè)提示,“輸入ID列數(shù)”,在此輸入標(biāo)識(shí)信息前幾列。(例如下面的示例R代碼為4)。在excel文件中創(chuàng)建一個(gè)名為“ melt”的新工作表,該工作表將堆疊數(shù)據(jù),并創(chuàng)建一個(gè)名為“ variable”的新列,該列等于原始選擇的數(shù)據(jù)列標(biāo)題。換句話說,輸出看起來與簡(jiǎn)單地在R中執(zhí)行這兩行的輸出完全相同:require(reshape)melt(your.unstacked.dataframe, id.vars = 1:4)這是一個(gè)例子:# unstacked data> df1  Year Month Country  Sport No_wins No_losses High_score Total_games2 2010     5     USA Soccer       4         3          5           93 2010     6     USA Soccer       5         3          4           84 2010     5     CAN Soccer       2         9          7          115 2010     6     CAN Soccer       4         8          4          136 2009     5     USA Soccer       8         1          4           97 2009     6     USA Soccer       0         0          3           28 2009     5     CAN Soccer       2         0          6           39 2009     6     CAN Soccer       3         0          8           3# stacking the data> require(reshape)> melt(df1, id.vars=1:4)  Year Month Country  Sport    variable value1  2010     5     USA Soccer     No_wins     42  2010     6     USA Soccer     No_wins     53  2010     5     CAN Soccer     No_wins     24  2010     6     CAN Soccer     No_wins     45  2009     5     USA Soccer     No_wins     86  2009     6     USA Soccer     No_wins     07  2009     5     CAN Soccer     No_wins     28  2009     6     CAN Soccer     No_wins     39  2010     5     USA Soccer   No_losses     310 2010     6     USA Soccer   No_losses     311 2010     5     CAN Soccer   No_losses     912 2010     6     CAN Soccer   No_losses     813 2009     5     USA Soccer   No_losses     114 2009     6     USA Soccer   No_losses     015 2009     5     CAN Soccer   No_losses     016 2009     6     CAN Soccer   No_losses     017 2010     5     USA Soccer  High_score     518 2010     6     USA Soccer  High_score     419 2010     5     CAN Soccer  High_score     7
查看完整描述

3 回答

?
三國(guó)紛爭(zhēng)

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊

Microsoft最近推出了Power Query,這是一個(gè)Excel加載項(xiàng),它為Excel內(nèi)的數(shù)據(jù)操作添加了許多有趣的功能,包括您要查找的內(nèi)容。

內(nèi)外接的實(shí)際功能被稱為“逆透視列”,這是解釋在這篇文章中。這是要點(diǎn):

  1. 下載并安裝加載項(xiàng)

  2. 打開您的Excel / CSV文件

  3. 選擇要熔化/重塑的表/范圍

  4. 在“高級(jí)查詢”選項(xiàng)卡中,單擊“從表”,這將打開“查詢編輯器”

  5. 選擇您要熔化/重塑的列(按Ctrl或Shift-Select,不要拖動(dòng))

  6. 在“轉(zhuǎn)換”選項(xiàng)卡中,單擊“取消透視列”(您還可以在此處應(yīng)用其他轉(zhuǎn)換,然后再返回Excel)

  7. 在“主頁(yè)”選項(xiàng)卡中,單擊“關(guān)閉并加載”。這將在Excel中創(chuàng)建具有所需結(jié)果的新表/查詢對(duì)象。


查看完整回答
反對(duì) 回復(fù) 2019-12-02
?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

首先創(chuàng)建一個(gè)用戶窗體,并將其命名為Unpivot_Form,其中包含兩個(gè)RefEdit字段-rng_id和value_id以及一個(gè)提交/執(zhí)行按鈕。我也是R用戶,rng_id是包含id的范圍,而value_id包含值;兩個(gè)范圍都包括標(biāo)題。


做兩個(gè)宏:


Sub unpivot()

Unpivot_Form.Show

End Sub

另一個(gè)宏位于該字段的提交/執(zhí)行按鈕內(nèi):


Private Sub submit_Click()

'Code to unpivot (convert wide to long for excel)


Dim rng_id, rng_id_header, val_id As Range

Dim colvar, emptyrow, col As Integer

Dim new_sheet As Worksheet


'Put val_id range into a range object

Set val_id = Range(value_id.Value)


'Determine the parameter for the value id range

'This is used for the looping later on

numrows = val_id.Rows.Count

numcols = val_id.Columns.Count


'Resize changes the "block" to the size defined by the row and column

'Offset moves the "block"

Set rng_id_header = Range(range_id.Value).Resize(1)

Set rng_id = Range(range_id.Value).Offset(1, 0).Resize(numrows - 1)


Set new_sheet = Worksheets.Add


'Set up the first column and first batch of id vars

new_sheet.Activate

Range("A65535").End(xlUp).Activate

rng_id_header.Copy ActiveCell

colvar = Range("XFD1").End(xlToLeft).Column + 1

Range("XFD1").End(xlToLeft).Offset(, 1).Value = "Variable"

Range("XFD1").End(xlToLeft).Offset(, 1).Value = "Value"


'Start populating the value ids

For col = 1 To numcols


  'populate var_id

  'determine last row

   emptyrow = Range("A65535").End(xlUp).Row + 1

   'no need to activate to source to copy

   rng_id.Copy new_sheet.Cells(emptyrow, 1)

  'copy the variable

  val_id.Offset(, col - 1).Resize(1, 1).Copy new_sheet.Range(Cells(emptyrow, colvar), Cells(emptyrow + numrows - 2, colvar))

  'copy the value

  val_id.Offset(1, col - 1).Resize(numrows - 1, 1).Copy new_sheet.Range(Cells(emptyrow, colvar + 1), Cells(emptyrow + numrows - 2, colvar + 1))


Next


Unload Me


End Sub

請(qǐng)享用!


查看完整回答
反對(duì) 回復(fù) 2019-12-02
  • 3 回答
  • 0 關(guān)注
  • 721 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)