VBA按当前单元格的某些值 新建一个这个名称的工作表
VBA按当前单元格的某些值 新建一个这个名称的工作表.
【这是一张补货表,要把每个店铺的补货数据统计到每个工作表中】
最佳答案
用for循环横向列标 然后if判断当公司对应的下方有值的时候,提取公司名新建sheet,把sheet名字改成对应的公司名,然后在按照有数量的单元格把对应的数据复制到对应的公司即可
追问:
你可以帮我写下吗?我写着写着就不知道怎么写了 追答:
Sub FLeitText()Application.ScreenUpdating = FalseDim Row_i As Integer, RowMax As Long, Column_j As Integer, ColumnMax As LongRowMax = Cells(Rows.Count, 1).End(3).rowColumnMax = Cells(1, Columns.Count).End(1).ColumnDim k As Integerk = 1Dim ArrArr = Range(Cells(1, 1), Cells(RowMax, ColumnMax))For Column_j = 5 To ColumnMax Dim Sht As Worksheet On Error Resume Next Set Sht = Sheets(Arr(1, Column_j)) If Sht Is Nothing Then Worksheets.Add(after:=Worksheets(Sheets.Count)).Name = Arr(1, Column_j) ActiveSheet.[a1].Resize(1, 5) = Array("货号", "货品名称", "颜色", "尺码", "数量") End If For Row_i = 2 To RowMax If Arr(Row_i, Column_j) <> "" Then k = k + 1 Sheets(Arr(1, Column_j)).Cells(k, 1) = Arr(Row_i, 1) Sheets(Arr(1, Column_j)).Cells(k, 2) = Arr(Row_i, 2) Sheets(Arr(1, Column_j)).Cells(k, 3) = Arr(Row_i, 3) Sheets(Arr(1, Column_j)).Cells(k, 4) = Arr(Row_i, 4) Sheets(Arr(1, Column_j)).Cells(k, 5) = Arr(Row_i, Column_j) End If Next k = 1NextApplication.ScreenUpdating = TrueEnd Sub
追问:
Sub aa()n = 12y = 11Dok = 1s = Trim(Sheet1.Cells(1, n).Text) If Sheet1.Cells(1, n) > 1 Then Sheets.Add.Name = s Elsen = n + 1y = y + 1End If For i = 2 To Sheet1.Range("l536").End(3).Row If Sheet1.Cells(i, 12) >= 1 Then k = k + 1 Sheets(s).Cells(k, 1) = Sheet1.Cells(i, 1) Sheets(s).Cells(k, 2) = Sheet1.Cells(i, y)End IfNextLoopEnd Sub哈哈,我自己写了一个也可以了,不过在取到重复的工作表名子就报错了。老师可以教我下,用什么语句是判断,如果单元格的名称和工作表是一样,那么就不新增吗?
追问:
取出来,但是数量为0的不取,要怎么填哪里呢? 追答:
写一个判断就好了,当数量列不为空的时候取值
数量单元格不为空
其他回答
其它网友回答:
原始状态
其它网友回答:1、插入模块,编辑代码
其它网友回答:
Sub test()
其它网友回答:
Dim r%, c%, s$, i%, j%, k%
其它网友回答:
r = Application.CountA(Sheets("Sheet1").Range("A:A"))
其它网友回答:
c = Application.CountA(Sheets("Sheet1").Range("1:1"))
其它网友回答:
For i = c To 5 Step -1
其它网友回答:
Sheets("Sheet1").Copy After:=Sheets("Sheet1")
其它网友回答:
s = Sheets("Sheet1").Cells(1, i)
其它网友回答:
Sheets("Sheet1 (2)").Name = s
其它网友回答:
Sheets(s).Select
其它网友回答:
For j = c To 5 Step -1
其它网友回答:
If j <> i Then Columns(j).Delete Shift:=xlToLeft
其它网友回答:
Next j
其它网友回答:
Range("E1") = "数量"
其它网友回答:
Range("A1:E1").Select
其它网友回答:
With Selection
其它网友回答:
.WrapText = False
其它网友回答:
.Font.Bold = False
其它网友回答:
.Font.ColorIndex = xlAutomatic
其它网友回答:
.Interior.Color = 65535
其它网友回答:
End With
其它网友回答:
Columns("A:E").EntireColumn.AutoFit
其它网友回答:
Range("A1").Select
其它网友回答:
For k = r To 2 Step -1
其它网友回答:
If Cells(k, 5) = "" Then Rows(k).Delete Shift:=xlUp
其它网友回答:
Next k
其它网友回答:
Next i
其它网友回答:
End Sub
其它网友回答:
其它网友回答:
其它网友回答:
2、运行代码
其它网友回答:
其它网友回答:
其它网友回答:
其它网友回答:
追答:
南京慕斯荟

追答:
西安益田

追答:
靖江的数据工作表

追答:
此代码的编辑思路,与手动操作相仿。 1、复制Sheet1工作表5个; 2、重命名这5个工作表的名称,分别为E1~I1单元格的值; 3、对这5个工作表的每一个进行操作:删除多余的列和数据是空格的行; 4、选择这5个工作表,在E1单元格输入“数量”二字,选择表头A1:E1设置格式。
追答:
我的百度网盘链接:http://pan.baidu.com/s/1o8boyvS 密码:4e5d