在Excel中怎么按指定的重復次數(shù)填充數(shù)據(jù)到一列
在Excel中怎么按指定的重復次數(shù)填充數(shù)據(jù)到一列
在工作中有時需要將Excel某列中的數(shù)據(jù)按指定的次數(shù)依次重復填充到另一列??捎脭?shù)組公式或VBA來實現(xiàn)這樣的填充。以下是學習啦小編為您帶來的關于在Excel中按指定的重復次數(shù)填充數(shù)據(jù)到一列,希望對您有所幫助。
在Excel中按指定的重復次數(shù)填充數(shù)據(jù)到一列
例如在下圖的示例中,要將A列的編號 按B列對應次數(shù)重復填充到D列,即首先將第一個編號“WOY756”在D列中填充2次,接著將第二個編號“QLG752”填充1次,將第三個編號 “RWR880”填充5次,……。
可用數(shù)組公式或VBA來實現(xiàn)這樣的填充,在D2單元格輸入下面的數(shù)組公式后按Ctrl+Shift+Enter結束(下同),然后拖動填充柄向下填充公式,直到最后一個編號按指定的次數(shù)全部出現(xiàn)為止。
公式1:
=OFFSET(A class="main">
在Excel中怎么按指定的重復次數(shù)填充數(shù)據(jù)到一列
在Excel中怎么按指定的重復次數(shù)填充數(shù)據(jù)到一列
在工作中有時需要將Excel某列中的數(shù)據(jù)按指定的次數(shù)依次重復填充到另一列。可用數(shù)組公式或VBA來實現(xiàn)這樣的填充。以下是學習啦小編為您帶來的關于在Excel中按指定的重復次數(shù)填充數(shù)據(jù)到一列,希望對您有所幫助。
在Excel中按指定的重復次數(shù)填充數(shù)據(jù)到一列
例如在下圖的示例中,要將A列的編號 按B列對應次數(shù)重復填充到D列,即首先將第一個編號“WOY756”在D列中填充2次,接著將第二個編號“QLG752”填充1次,將第三個編號 “RWR880”填充5次,……。
可用數(shù)組公式或VBA來實現(xiàn)這樣的填充,在D2單元格輸入下面的數(shù)組公式后按Ctrl+Shift+Enter結束(下同),然后拖動填充柄向下填充公式,直到最后一個編號按指定的次數(shù)全部出現(xiàn)為止。
公式1:
=OFFSET(A$1,MIN(IF(COUNTIF($D$1:D1,A$2:A$21)
說明:COUNTIF函數(shù)統(tǒng)計公式所在單元格以上區(qū)域中所產(chǎn)生的各個“編號”數(shù)量,將其與B列對應次數(shù)進行對比,如果未達到B列對應次數(shù),則返回“編號” 相對A1單元格的偏移量,否則返回“FALSE”,這將得到一個包含“FALSE”和偏移量的數(shù)組。MIN函數(shù)取得最小值,即“編號”的偏移量,最后用 OFFSET函數(shù)返回“編號”。
公式2:
=INDEX(A$1:A$21,SMALL(IF($B$2:$B$21>=COLUMN($A:$J),ROW($B$2:$B$21)),ROW(A1)))
說明:“IF($B$2:$B$21>=COLUMN($A:$J),ROW($B$2:$B$21))”產(chǎn)生一個20行10列由FALSE和數(shù)字組成的數(shù)組(本例A列共 有20個數(shù)據(jù),最大重復次數(shù)為10),其中的數(shù)字為各“編號”對應的行號,且各數(shù)字的數(shù)量與B列的重復次數(shù)相同。如16行“BXQ763”對應的“重復次 數(shù)”為3,數(shù)組中即包含3個“16”。“COLUMN($A:$J)”需根據(jù)B列的最大值進行修改,例如“重復次數(shù)”中最大值為26,則改為 “COLUMN($A:$Z)”。
公式3:
=INDEX(A$2:A$21,MATCH(ROW(A1)-1,SUBTOTAL(9,OFFSET(B$1,,,ROW($1:$21))),1))
說明:MATCH函數(shù)的第二個參數(shù)“SUBTOTAL(9,OFFSET(B$1,,,ROW($1:$21)))”,在本例中產(chǎn)生一個對B列數(shù)字進行累 加的內(nèi)存數(shù)組“{0;2;3;8;10;13;22;29;31;37;44;46;56;59;69;72;75;85;94;97;99}”,第三個 參數(shù)為“1”,MATCH函數(shù)會查找小于或等于第一個參數(shù)的最大值,并返回其在數(shù)組中的相對位置,即A2:A21區(qū)域中的相對行號。例如對于D17單元 格,MATCH函數(shù)的第一個參數(shù)“ROW(A16)-1”返回15,數(shù)組中小于等于15的最大值為13,13處于數(shù)組中的第6個位置,MATCH函數(shù)返回 6,公式返回A2:A21區(qū)域中的第6行數(shù)據(jù),即編號“JGN347”。
如果數(shù)據(jù)量較大,用下面的VBA代碼較為快捷。按Alt+F11,打開VBA編輯器,在代碼窗口中粘貼下列代碼并運行即可。
Sub 按指定次數(shù)重復數(shù)據(jù)()
Dim Rng, Arr()
Dim i As Integer, j As Integer, k As Integer
Dim LastRow As Integer, Total As Integer
LastRow = [A65536].End(xlUp).Row
Total = Application.WorksheetFunction.Sum(Range("B2:B" & LastRow))
Rng = Range("A1:B" & LastRow)
ReDim Arr(1 To Total, 1 To 1)
For i = 2 To UBound(Rng, 1)
For j = 1 To Rng(i, 2)
k = k + 1
Arr(k, 1) = Rng(i, 1)
Next
Next
Range("D2").Resize(k, 1).Value = Arr
End Sub
猜你喜歡:
5.Excel中進行統(tǒng)計出現(xiàn)次數(shù)的操作方法
:A)說明:COUNTIF函數(shù)統(tǒng)計公式所在單元格以上區(qū)域中所產(chǎn)生的各個“編號”數(shù)量,將其與B列對應次數(shù)進行對比,如果未達到B列對應次數(shù),則返回“編號” 相對A1單元格的偏移量,否則返回“FALSE”,這將得到一個包含“FALSE”和偏移量的數(shù)組。MIN函數(shù)取得最小值,即“編號”的偏移量,最后用 OFFSET函數(shù)返回“編號”。
公式2:
=INDEX(A class="main">
在Excel中怎么按指定的重復次數(shù)填充數(shù)據(jù)到一列
在工作中有時需要將Excel某列中的數(shù)據(jù)按指定的次數(shù)依次重復填充到另一列??捎脭?shù)組公式或VBA來實現(xiàn)這樣的填充。以下是學習啦小編為您帶來的關于在Excel中按指定的重復次數(shù)填充數(shù)據(jù)到一列,希望對您有所幫助。
在Excel中按指定的重復次數(shù)填充數(shù)據(jù)到一列
例如在下圖的示例中,要將A列的編號 按B列對應次數(shù)重復填充到D列,即首先將第一個編號“WOY756”在D列中填充2次,接著將第二個編號“QLG752”填充1次,將第三個編號 “RWR880”填充5次,……。
可用數(shù)組公式或VBA來實現(xiàn)這樣的填充,在D2單元格輸入下面的數(shù)組公式后按Ctrl+Shift+Enter結束(下同),然后拖動填充柄向下填充公式,直到最后一個編號按指定的次數(shù)全部出現(xiàn)為止。
公式1:
=OFFSET(A$1,MIN(IF(COUNTIF($D$1:D1,A$2:A$21)
說明:COUNTIF函數(shù)統(tǒng)計公式所在單元格以上區(qū)域中所產(chǎn)生的各個“編號”數(shù)量,將其與B列對應次數(shù)進行對比,如果未達到B列對應次數(shù),則返回“編號” 相對A1單元格的偏移量,否則返回“FALSE”,這將得到一個包含“FALSE”和偏移量的數(shù)組。MIN函數(shù)取得最小值,即“編號”的偏移量,最后用 OFFSET函數(shù)返回“編號”。
公式2:
=INDEX(A$1:A$21,SMALL(IF($B$2:$B$21>=COLUMN($A:$J),ROW($B$2:$B$21)),ROW(A1)))
說明:“IF($B$2:$B$21>=COLUMN($A:$J),ROW($B$2:$B$21))”產(chǎn)生一個20行10列由FALSE和數(shù)字組成的數(shù)組(本例A列共 有20個數(shù)據(jù),最大重復次數(shù)為10),其中的數(shù)字為各“編號”對應的行號,且各數(shù)字的數(shù)量與B列的重復次數(shù)相同。如16行“BXQ763”對應的“重復次 數(shù)”為3,數(shù)組中即包含3個“16”。“COLUMN($A:$J)”需根據(jù)B列的最大值進行修改,例如“重復次數(shù)”中最大值為26,則改為 “COLUMN($A:$Z)”。
公式3:
=INDEX(A$2:A$21,MATCH(ROW(A1)-1,SUBTOTAL(9,OFFSET(B$1,,,ROW($1:$21))),1))
說明:MATCH函數(shù)的第二個參數(shù)“SUBTOTAL(9,OFFSET(B$1,,,ROW($1:$21)))”,在本例中產(chǎn)生一個對B列數(shù)字進行累 加的內(nèi)存數(shù)組“{0;2;3;8;10;13;22;29;31;37;44;46;56;59;69;72;75;85;94;97;99}”,第三個 參數(shù)為“1”,MATCH函數(shù)會查找小于或等于第一個參數(shù)的最大值,并返回其在數(shù)組中的相對位置,即A2:A21區(qū)域中的相對行號。例如對于D17單元 格,MATCH函數(shù)的第一個參數(shù)“ROW(A16)-1”返回15,數(shù)組中小于等于15的最大值為13,13處于數(shù)組中的第6個位置,MATCH函數(shù)返回 6,公式返回A2:A21區(qū)域中的第6行數(shù)據(jù),即編號“JGN347”。
如果數(shù)據(jù)量較大,用下面的VBA代碼較為快捷。按Alt+F11,打開VBA編輯器,在代碼窗口中粘貼下列代碼并運行即可。
Sub 按指定次數(shù)重復數(shù)據(jù)()
Dim Rng, Arr()
Dim i As Integer, j As Integer, k As Integer
Dim LastRow As Integer, Total As Integer
LastRow = [A65536].End(xlUp).Row
Total = Application.WorksheetFunction.Sum(Range("B2:B" & LastRow))
Rng = Range("A1:B" & LastRow)
ReDim Arr(1 To Total, 1 To 1)
For i = 2 To UBound(Rng, 1)
For j = 1 To Rng(i, 2)
k = k + 1
Arr(k, 1) = Rng(i, 1)
Next
Next
Range("D2").Resize(k, 1).Value = Arr
End Sub
猜你喜歡:
5.Excel中進行統(tǒng)計出現(xiàn)次數(shù)的操作方法
:$B>=COLUMN($A:$J),ROW($B在Excel中怎么按指定的重復次數(shù)填充數(shù)據(jù)到一列
在工作中有時需要將Excel某列中的數(shù)據(jù)按指定的次數(shù)依次重復填充到另一列??捎脭?shù)組公式或VBA來實現(xiàn)這樣的填充。以下是學習啦小編為您帶來的關于在Excel中按指定的重復次數(shù)填充數(shù)據(jù)到一列,希望對您有所幫助。
在Excel中按指定的重復次數(shù)填充數(shù)據(jù)到一列
例如在下圖的示例中,要將A列的編號 按B列對應次數(shù)重復填充到D列,即首先將第一個編號“WOY756”在D列中填充2次,接著將第二個編號“QLG752”填充1次,將第三個編號 “RWR880”填充5次,……。
可用數(shù)組公式或VBA來實現(xiàn)這樣的填充,在D2單元格輸入下面的數(shù)組公式后按Ctrl+Shift+Enter結束(下同),然后拖動填充柄向下填充公式,直到最后一個編號按指定的次數(shù)全部出現(xiàn)為止。
公式1:
=OFFSET(A$1,MIN(IF(COUNTIF($D$1:D1,A$2:A$21)
說明:COUNTIF函數(shù)統(tǒng)計公式所在單元格以上區(qū)域中所產(chǎn)生的各個“編號”數(shù)量,將其與B列對應次數(shù)進行對比,如果未達到B列對應次數(shù),則返回“編號” 相對A1單元格的偏移量,否則返回“FALSE”,這將得到一個包含“FALSE”和偏移量的數(shù)組。MIN函數(shù)取得最小值,即“編號”的偏移量,最后用 OFFSET函數(shù)返回“編號”。
公式2:
=INDEX(A$1:A$21,SMALL(IF($B$2:$B$21>=COLUMN($A:$J),ROW($B$2:$B$21)),ROW(A1)))
說明:“IF($B$2:$B$21>=COLUMN($A:$J),ROW($B$2:$B$21))”產(chǎn)生一個20行10列由FALSE和數(shù)字組成的數(shù)組(本例A列共 有20個數(shù)據(jù),最大重復次數(shù)為10),其中的數(shù)字為各“編號”對應的行號,且各數(shù)字的數(shù)量與B列的重復次數(shù)相同。如16行“BXQ763”對應的“重復次 數(shù)”為3,數(shù)組中即包含3個“16”。“COLUMN($A:$J)”需根據(jù)B列的最大值進行修改,例如“重復次數(shù)”中最大值為26,則改為 “COLUMN($A:$Z)”。
公式3:
=INDEX(A$2:A$21,MATCH(ROW(A1)-1,SUBTOTAL(9,OFFSET(B$1,,,ROW($1:$21))),1))
說明:MATCH函數(shù)的第二個參數(shù)“SUBTOTAL(9,OFFSET(B$1,,,ROW($1:$21)))”,在本例中產(chǎn)生一個對B列數(shù)字進行累 加的內(nèi)存數(shù)組“{0;2;3;8;10;13;22;29;31;37;44;46;56;59;69;72;75;85;94;97;99}”,第三個 參數(shù)為“1”,MATCH函數(shù)會查找小于或等于第一個參數(shù)的最大值,并返回其在數(shù)組中的相對位置,即A2:A21區(qū)域中的相對行號。例如對于D17單元 格,MATCH函數(shù)的第一個參數(shù)“ROW(A16)-1”返回15,數(shù)組中小于等于15的最大值為13,13處于數(shù)組中的第6個位置,MATCH函數(shù)返回 6,公式返回A2:A21區(qū)域中的第6行數(shù)據(jù),即編號“JGN347”。
如果數(shù)據(jù)量較大,用下面的VBA代碼較為快捷。按Alt+F11,打開VBA編輯器,在代碼窗口中粘貼下列代碼并運行即可。
Sub 按指定次數(shù)重復數(shù)據(jù)()
Dim Rng, Arr()
Dim i As Integer, j As Integer, k As Integer
Dim LastRow As Integer, Total As Integer
LastRow = [A65536].End(xlUp).Row
Total = Application.WorksheetFunction.Sum(Range("B2:B" & LastRow))
Rng = Range("A1:B" & LastRow)
ReDim Arr(1 To Total, 1 To 1)
For i = 2 To UBound(Rng, 1)
For j = 1 To Rng(i, 2)
k = k + 1
Arr(k, 1) = Rng(i, 1)
Next
Next
Range("D2").Resize(k, 1).Value = Arr
End Sub
猜你喜歡:
5.Excel中進行統(tǒng)計出現(xiàn)次數(shù)的操作方法
:$B)),ROW(A1)))說明:“IF($B
在Excel中怎么按指定的重復次數(shù)填充數(shù)據(jù)到一列
在工作中有時需要將Excel某列中的數(shù)據(jù)按指定的次數(shù)依次重復填充到另一列??捎脭?shù)組公式或VBA來實現(xiàn)這樣的填充。以下是學習啦小編為您帶來的關于在Excel中按指定的重復次數(shù)填充數(shù)據(jù)到一列,希望對您有所幫助。
在Excel中按指定的重復次數(shù)填充數(shù)據(jù)到一列
例如在下圖的示例中,要將A列的編號 按B列對應次數(shù)重復填充到D列,即首先將第一個編號“WOY756”在D列中填充2次,接著將第二個編號“QLG752”填充1次,將第三個編號 “RWR880”填充5次,……。
可用數(shù)組公式或VBA來實現(xiàn)這樣的填充,在D2單元格輸入下面的數(shù)組公式后按Ctrl+Shift+Enter結束(下同),然后拖動填充柄向下填充公式,直到最后一個編號按指定的次數(shù)全部出現(xiàn)為止。
公式1:
=OFFSET(A$1,MIN(IF(COUNTIF($D$1:D1,A$2:A$21)
說明:COUNTIF函數(shù)統(tǒng)計公式所在單元格以上區(qū)域中所產(chǎn)生的各個“編號”數(shù)量,將其與B列對應次數(shù)進行對比,如果未達到B列對應次數(shù),則返回“編號” 相對A1單元格的偏移量,否則返回“FALSE”,這將得到一個包含“FALSE”和偏移量的數(shù)組。MIN函數(shù)取得最小值,即“編號”的偏移量,最后用 OFFSET函數(shù)返回“編號”。
公式2:
=INDEX(A$1:A$21,SMALL(IF($B$2:$B$21>=COLUMN($A:$J),ROW($B$2:$B$21)),ROW(A1)))
說明:“IF($B$2:$B$21>=COLUMN($A:$J),ROW($B$2:$B$21))”產(chǎn)生一個20行10列由FALSE和數(shù)字組成的數(shù)組(本例A列共 有20個數(shù)據(jù),最大重復次數(shù)為10),其中的數(shù)字為各“編號”對應的行號,且各數(shù)字的數(shù)量與B列的重復次數(shù)相同。如16行“BXQ763”對應的“重復次 數(shù)”為3,數(shù)組中即包含3個“16”。“COLUMN($A:$J)”需根據(jù)B列的最大值進行修改,例如“重復次數(shù)”中最大值為26,則改為 “COLUMN($A:$Z)”。
公式3:
=INDEX(A$2:A$21,MATCH(ROW(A1)-1,SUBTOTAL(9,OFFSET(B$1,,,ROW($1:$21))),1))
說明:MATCH函數(shù)的第二個參數(shù)“SUBTOTAL(9,OFFSET(B$1,,,ROW($1:$21)))”,在本例中產(chǎn)生一個對B列數(shù)字進行累 加的內(nèi)存數(shù)組“{0;2;3;8;10;13;22;29;31;37;44;46;56;59;69;72;75;85;94;97;99}”,第三個 參數(shù)為“1”,MATCH函數(shù)會查找小于或等于第一個參數(shù)的最大值,并返回其在數(shù)組中的相對位置,即A2:A21區(qū)域中的相對行號。例如對于D17單元 格,MATCH函數(shù)的第一個參數(shù)“ROW(A16)-1”返回15,數(shù)組中小于等于15的最大值為13,13處于數(shù)組中的第6個位置,MATCH函數(shù)返回 6,公式返回A2:A21區(qū)域中的第6行數(shù)據(jù),即編號“JGN347”。
如果數(shù)據(jù)量較大,用下面的VBA代碼較為快捷。按Alt+F11,打開VBA編輯器,在代碼窗口中粘貼下列代碼并運行即可。
Sub 按指定次數(shù)重復數(shù)據(jù)()
Dim Rng, Arr()
Dim i As Integer, j As Integer, k As Integer
Dim LastRow As Integer, Total As Integer
LastRow = [A65536].End(xlUp).Row
Total = Application.WorksheetFunction.Sum(Range("B2:B" & LastRow))
Rng = Range("A1:B" & LastRow)
ReDim Arr(1 To Total, 1 To 1)
For i = 2 To UBound(Rng, 1)
For j = 1 To Rng(i, 2)
k = k + 1
Arr(k, 1) = Rng(i, 1)
Next
Next
Range("D2").Resize(k, 1).Value = Arr
End Sub
猜你喜歡:
5.Excel中進行統(tǒng)計出現(xiàn)次數(shù)的操作方法
:$B>=COLUMN($A:$J),ROW($B在Excel中怎么按指定的重復次數(shù)填充數(shù)據(jù)到一列
在工作中有時需要將Excel某列中的數(shù)據(jù)按指定的次數(shù)依次重復填充到另一列??捎脭?shù)組公式或VBA來實現(xiàn)這樣的填充。以下是學習啦小編為您帶來的關于在Excel中按指定的重復次數(shù)填充數(shù)據(jù)到一列,希望對您有所幫助。
在Excel中按指定的重復次數(shù)填充數(shù)據(jù)到一列
例如在下圖的示例中,要將A列的編號 按B列對應次數(shù)重復填充到D列,即首先將第一個編號“WOY756”在D列中填充2次,接著將第二個編號“QLG752”填充1次,將第三個編號 “RWR880”填充5次,……。
可用數(shù)組公式或VBA來實現(xiàn)這樣的填充,在D2單元格輸入下面的數(shù)組公式后按Ctrl+Shift+Enter結束(下同),然后拖動填充柄向下填充公式,直到最后一個編號按指定的次數(shù)全部出現(xiàn)為止。
公式1:
=OFFSET(A$1,MIN(IF(COUNTIF($D$1:D1,A$2:A$21)
說明:COUNTIF函數(shù)統(tǒng)計公式所在單元格以上區(qū)域中所產(chǎn)生的各個“編號”數(shù)量,將其與B列對應次數(shù)進行對比,如果未達到B列對應次數(shù),則返回“編號” 相對A1單元格的偏移量,否則返回“FALSE”,這將得到一個包含“FALSE”和偏移量的數(shù)組。MIN函數(shù)取得最小值,即“編號”的偏移量,最后用 OFFSET函數(shù)返回“編號”。
公式2:
=INDEX(A$1:A$21,SMALL(IF($B$2:$B$21>=COLUMN($A:$J),ROW($B$2:$B$21)),ROW(A1)))
說明:“IF($B$2:$B$21>=COLUMN($A:$J),ROW($B$2:$B$21))”產(chǎn)生一個20行10列由FALSE和數(shù)字組成的數(shù)組(本例A列共 有20個數(shù)據(jù),最大重復次數(shù)為10),其中的數(shù)字為各“編號”對應的行號,且各數(shù)字的數(shù)量與B列的重復次數(shù)相同。如16行“BXQ763”對應的“重復次 數(shù)”為3,數(shù)組中即包含3個“16”。“COLUMN($A:$J)”需根據(jù)B列的最大值進行修改,例如“重復次數(shù)”中最大值為26,則改為 “COLUMN($A:$Z)”。
公式3:
=INDEX(A$2:A$21,MATCH(ROW(A1)-1,SUBTOTAL(9,OFFSET(B$1,,,ROW($1:$21))),1))
說明:MATCH函數(shù)的第二個參數(shù)“SUBTOTAL(9,OFFSET(B$1,,,ROW($1:$21)))”,在本例中產(chǎn)生一個對B列數(shù)字進行累 加的內(nèi)存數(shù)組“{0;2;3;8;10;13;22;29;31;37;44;46;56;59;69;72;75;85;94;97;99}”,第三個 參數(shù)為“1”,MATCH函數(shù)會查找小于或等于第一個參數(shù)的最大值,并返回其在數(shù)組中的相對位置,即A2:A21區(qū)域中的相對行號。例如對于D17單元 格,MATCH函數(shù)的第一個參數(shù)“ROW(A16)-1”返回15,數(shù)組中小于等于15的最大值為13,13處于數(shù)組中的第6個位置,MATCH函數(shù)返回 6,公式返回A2:A21區(qū)域中的第6行數(shù)據(jù),即編號“JGN347”。
如果數(shù)據(jù)量較大,用下面的VBA代碼較為快捷。按Alt+F11,打開VBA編輯器,在代碼窗口中粘貼下列代碼并運行即可。
Sub 按指定次數(shù)重復數(shù)據(jù)()
Dim Rng, Arr()
Dim i As Integer, j As Integer, k As Integer
Dim LastRow As Integer, Total As Integer
LastRow = [A65536].End(xlUp).Row
Total = Application.WorksheetFunction.Sum(Range("B2:B" & LastRow))
Rng = Range("A1:B" & LastRow)
ReDim Arr(1 To Total, 1 To 1)
For i = 2 To UBound(Rng, 1)
For j = 1 To Rng(i, 2)
k = k + 1
Arr(k, 1) = Rng(i, 1)
Next
Next
Range("D2").Resize(k, 1).Value = Arr
End Sub
猜你喜歡:
5.Excel中進行統(tǒng)計出現(xiàn)次數(shù)的操作方法
:$B))”產(chǎn)生一個20行10列由FALSE和數(shù)字組成的數(shù)組(本例A列共 有20個數(shù)據(jù),最大重復次數(shù)為10),其中的數(shù)字為各“編號”對應的行號,且各數(shù)字的數(shù)量與B列的重復次數(shù)相同。如16行“BXQ763”對應的“重復次 數(shù)”為3,數(shù)組中即包含3個“16”。“COLUMN($A:$J)”需根據(jù)B列的最大值進行修改,例如“重復次數(shù)”中最大值為26,則改為 “COLUMN($A:$Z)”。公式3:
=INDEX(A
在Excel中怎么按指定的重復次數(shù)填充數(shù)據(jù)到一列
在工作中有時需要將Excel某列中的數(shù)據(jù)按指定的次數(shù)依次重復填充到另一列??捎脭?shù)組公式或VBA來實現(xiàn)這樣的填充。以下是學習啦小編為您帶來的關于在Excel中按指定的重復次數(shù)填充數(shù)據(jù)到一列,希望對您有所幫助。
在Excel中按指定的重復次數(shù)填充數(shù)據(jù)到一列
例如在下圖的示例中,要將A列的編號 按B列對應次數(shù)重復填充到D列,即首先將第一個編號“WOY756”在D列中填充2次,接著將第二個編號“QLG752”填充1次,將第三個編號 “RWR880”填充5次,……。
可用數(shù)組公式或VBA來實現(xiàn)這樣的填充,在D2單元格輸入下面的數(shù)組公式后按Ctrl+Shift+Enter結束(下同),然后拖動填充柄向下填充公式,直到最后一個編號按指定的次數(shù)全部出現(xiàn)為止。
公式1:
=OFFSET(A$1,MIN(IF(COUNTIF($D$1:D1,A$2:A$21)
說明:COUNTIF函數(shù)統(tǒng)計公式所在單元格以上區(qū)域中所產(chǎn)生的各個“編號”數(shù)量,將其與B列對應次數(shù)進行對比,如果未達到B列對應次數(shù),則返回“編號” 相對A1單元格的偏移量,否則返回“FALSE”,這將得到一個包含“FALSE”和偏移量的數(shù)組。MIN函數(shù)取得最小值,即“編號”的偏移量,最后用 OFFSET函數(shù)返回“編號”。
公式2:
=INDEX(A$1:A$21,SMALL(IF($B$2:$B$21>=COLUMN($A:$J),ROW($B$2:$B$21)),ROW(A1)))
說明:“IF($B$2:$B$21>=COLUMN($A:$J),ROW($B$2:$B$21))”產(chǎn)生一個20行10列由FALSE和數(shù)字組成的數(shù)組(本例A列共 有20個數(shù)據(jù),最大重復次數(shù)為10),其中的數(shù)字為各“編號”對應的行號,且各數(shù)字的數(shù)量與B列的重復次數(shù)相同。如16行“BXQ763”對應的“重復次 數(shù)”為3,數(shù)組中即包含3個“16”。“COLUMN($A:$J)”需根據(jù)B列的最大值進行修改,例如“重復次數(shù)”中最大值為26,則改為 “COLUMN($A:$Z)”。
公式3:
=INDEX(A$2:A$21,MATCH(ROW(A1)-1,SUBTOTAL(9,OFFSET(B$1,,,ROW($1:$21))),1))
說明:MATCH函數(shù)的第二個參數(shù)“SUBTOTAL(9,OFFSET(B$1,,,ROW($1:$21)))”,在本例中產(chǎn)生一個對B列數(shù)字進行累 加的內(nèi)存數(shù)組“{0;2;3;8;10;13;22;29;31;37;44;46;56;59;69;72;75;85;94;97;99}”,第三個 參數(shù)為“1”,MATCH函數(shù)會查找小于或等于第一個參數(shù)的最大值,并返回其在數(shù)組中的相對位置,即A2:A21區(qū)域中的相對行號。例如對于D17單元 格,MATCH函數(shù)的第一個參數(shù)“ROW(A16)-1”返回15,數(shù)組中小于等于15的最大值為13,13處于數(shù)組中的第6個位置,MATCH函數(shù)返回 6,公式返回A2:A21區(qū)域中的第6行數(shù)據(jù),即編號“JGN347”。
如果數(shù)據(jù)量較大,用下面的VBA代碼較為快捷。按Alt+F11,打開VBA編輯器,在代碼窗口中粘貼下列代碼并運行即可。
Sub 按指定次數(shù)重復數(shù)據(jù)()
Dim Rng, Arr()
Dim i As Integer, j As Integer, k As Integer
Dim LastRow As Integer, Total As Integer
LastRow = [A65536].End(xlUp).Row
Total = Application.WorksheetFunction.Sum(Range("B2:B" & LastRow))
Rng = Range("A1:B" & LastRow)
ReDim Arr(1 To Total, 1 To 1)
For i = 2 To UBound(Rng, 1)
For j = 1 To Rng(i, 2)
k = k + 1
Arr(k, 1) = Rng(i, 1)
Next
Next
Range("D2").Resize(k, 1).Value = Arr
End Sub
猜你喜歡:
:A,MATCH(ROW(A1)-1,SUBTOTAL(9,OFFSET(B class="main">在Excel中怎么按指定的重復次數(shù)填充數(shù)據(jù)到一列
在Excel中怎么按指定的重復次數(shù)填充數(shù)據(jù)到一列
在Excel中怎么按指定的重復次數(shù)填充數(shù)據(jù)到一列
在Excel中怎么按指定的重復次數(shù)填充數(shù)據(jù)到一列
如果數(shù)據(jù)量較大,用下面的VBA代碼較為快捷。按Alt+F11,打開VBA編輯器,在代碼窗口中粘貼下列代碼并運行即可。
Sub 按指定次數(shù)重復數(shù)據(jù)()
Dim Rng, Arr()
Dim i As Integer, j As Integer, k As Integer
Dim LastRow As Integer, Total As Integer
LastRow = [A65536].End(xlUp).Row
Total = Application.WorksheetFunction.Sum(Range("B2:B" & LastRow))
Rng = Range("A1:B" & LastRow)
ReDim Arr(1 To Total, 1 To 1)
For i = 2 To UBound(Rng, 1)
For j = 1 To Rng(i, 2)
k = k + 1
Arr(k, 1) = Rng(i, 1)
Next
Next
Range("D2").Resize(k, 1).Value = Arr
End Sub
猜你喜歡: