(VBA)如何将列单元格分配给对应的组,并将组单元格粘贴到组表单?
试图创build一个VBA脚本 –
链接到工作簿在这里
我在列B中有一个关键字列表,每个关键字对应于列A中的一个组 :
如何使用VBA代码将每个关键字列表分组到相应的组工作表中?
团体“不锈钢”和“玻璃饮水机”的例子:
集团“不锈钢” :
集团“玻璃饮水机” :
任何帮助将不胜感激!
编辑:
试图创build一个基于@BruceWayne公式的macros。
获取线路错误:
Selection.FormulaArray = _ "=IFERROR(INDEX('Script to organize Group'!R2C[1]:R469C[1],SMALL(IF('Script to organize Group'!R2C:R469C=MID(CELL(""filename"",R[-1]C),FIND(""]"",CELL(""filename"",R[-1]C))+1,255),ROW('Script to organize Group'!R2C:R469C)-ROW('Script to organize Group'!R2C)+1),ROWS('Script to organize Group'!R2C[1]:RC[1]))),"""")"
注意:还尝试使用Range("A2").FormulaArray = _
而不是Selection.FormulaArray = _
,但仍然得到相同的错误。
我在VBA代码的尝试,使用下面的公式:
Sub CategorizeKeywordsIntoGroups() Dim ws As Worksheet Set ws = ActiveWorkbook.ActiveSheet 'Set the exact sheet, not just the one that is active _ 'and then you will go through all the sheets Range("A2").FormulaArray = _ "=IFERROR(INDEX('Script to organize Group'!R2C[1]:R469C[1],SMALL(IF('Script to organize Group'!R2C:R469C=MID(CELL(""filename"",R[-1]C),FIND(""]"",CELL(""filename"",R[-1]C))+1,255),ROW('Script to organize Group'!R2C:R469C)-ROW('Script to organize Group'!R2C)+1),ROWS('Script to organize Group'!R2C[1]:RC[1]))),"""")" Selection.AutoFill Destination:=Range("A2:A9999"), Type:=xlFillDefault Range("A2:A29").Select End Sub
在以组命名的每个工作表中,将其置于A2:
=IFERROR(INDEX(Sheet1!B$2:B$7,SMALL(IF(Sheet1!A$2:A$7=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255),ROW(Sheet1!A$2:A$7)-ROW(Sheet1!A$2)+1),ROWS(Sheet1!B$2:B2))),"")
这假定你有文件保存在某个地方。 input这个数组(用CTRL + SHIFT + ENTER )并向下拖动。 你将不得不调整当然的范围。 但是,当您添加组/关键字时,列表将自动更新。 另外,要返回说货币或平均。 一个月,只要将第一个指数范围从B$2:B$7
改为任何新的范围,即C$2:C$7
。
编辑:使用所有数据将“Sheet1”更改为主表: =IFERROR(INDEX('Script to organize Group'!B$2:B$469,SMALL(IF('Script to organize Group'!A$2:A$469=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255),ROW('Script to organize Group'!A$2:A$469)-ROW('Script to organize Group'!A$2)+1),ROWS('Script to organize Group'!B$2:B2))),"")
,再按ENTER键不放,按住CTRL + SHIFT,然后input。