需要的话给你写段VBA代码。说说你的表名,就是纯数字吗?而且是从1~90顺序的吗?
Dim i As Long。
For i = 1 To Worksheets.Count。
Worksheets(Worksheets.Count).Move before:=Worksheets("1")。
Next
Private Sub Worksheet_SelectionChange(ByVal Target As Range)。
Dim bb As String。
Dim aa As String。
Dim cc As String。
Dim dd As String。
Sheets(2).Columns(2).ClearContents。
Sheets(2).Cells(1, 2).Value = "岩性"。
Sheets(2).Columns(1).ClearContents。
Sheets(2).Cells(1, 1).Value = "序号"。
Dim j As Integer。
j = j + 1
For j = 2 To 2
cc = Sheets(2).Cells(j, 1).Value。
dd = Sheets(2).Cells(j, 2).Value。
If Sheets(2).Cells(1, 2) <> "" And Sheets(2).Cells(j + 1, 2).Value = "" Then。
Dim i As Integer。
i = i + 1
For i = 2 To 30。
bb = Sheets(1).Cells(i, 2).Value。
aa = Sheets(1).Cells(i, 1).Value。
If Sheets(1).Cells(i, 2).Value <> "" Then。
If Left(Right(bb, 5), 2) = "油迹" Then。
Sheets(2).Cells(j, 2).Value = "油迹"。
Sheets(2).Cells(j, 1).Value = aa。
j = j + 1
End If
If Left(Right(bb, 5), 2) = "油浸" Then。
Sheets(2).Cells(j, 2).Value = "油浸"。
Sheets(2).Cells(j, 1).Value = aa。
j = j + 1
End If
If Left(Right(bb, 5), 2) = "荧光" Then。
Sheets(2).Cells(j, 2).Value = "荧光"。
Sheets(2).Cells(j, 1).Value = aa。
j = j + 1
End If
End If
Next i
End If
Next j
End Sub
刚别人做的,你可以拿去看看。下面的链接有资料。
用VBA可以实现,代码如下:循环员工家庭所在地汇总表,然后依据分公司自动建立分公司工作簿,然后提取数据到新的工作簿。
一、效果如下:
二、原始代码
Sub 人员分薄()
Dim EndRow As Integer。
Dim UserRow As Integer。
Dim SheetNameStr As String。
On Error Resume Next。
EndRow = Sheets("员工家庭所在地汇总表").Range("A:A").Find("").Row - 1。
For i = 1 To EndRow。
SheetNameStr = Sheets("员工家庭所在地汇总表").Range("A" & i).Value。
If Sheets(SheetNameStr) Is Nothing Then。
Sheets("员工家庭所在地汇总表").Select。
Sheets.Add AFter:=Sheets("员工家庭所在地汇总表")。
ActiveSheet.Name = SheetNameStr。
UserRow = 1。
Else
UserRow = Sheets(SheetNameStr).Range("A:A").Find("").Row。
End If
Sheets(SheetNameStr).Range("A" & UserRow) = Sheets("员工家庭所在地汇总表").Range("B" & i)。
Next
End Sub
给你写个例子吧,要仔细讲的话内容还挺多,而且你的具体需求也不明确,有些细节也是要调整的。
应该是kybb没有事先申明为worksheet,所以,这行的set语句会出错。
处理意见:
1、在之前先申明变量,加入Dim kybb As Worksheet这一句;
2、也可以将set语句改为with语句试试。