2017-08-16 11 views
-1

スプレッドシートの名前に従って、同じワークブックの複数のExcelスプレッドシートを1つのスプレッドシートに結合するためのスクリプトが必要です。ただし、スプレッドシートの名前は別の名前になっています。 0000a、0000b、0000c ....名前の最初の4つの数字を比較するにはどうすればよいでしょうか?同様に、名前を0000の1つのスプレッドシートに結合しますか?助けを事前に感謝名前に基づいてExcelでスプレッドシートを結合する

+2

可能な複製(https://stackoverflow.com/questions/26512995/combine-sheets-in-excel) – RealCheeseLord

答えて

1

はすなわち、Worksheet.Nameと名前を取得します。Left

Dim ws as Worksheet 
For Each ws in Worksheets 
MsgBox Left(ws.Name, 4) 
Next ws 

あなたが最初の4つの文字を抽出することができます。 arrayに保存する場合はApplication.Match -Functionを使用してarrayの値と一致させることができます。あなたが戻ったインデックスでは、Worksheets(index)を参照することができます。

EDIT:[Excelのシートを組み合わせ]の

Sub ad() 
Dim ws As Worksheet 
Dim lc As Range, lc1 As Range 
Dim arr() As String, index As Long, Count As Long 

Count = Worksheets.Count 
ReDim arr(1 To Count) 'Array to store worksheetsnames 

For i = 1 To Count 
arr(i) = Left(Worksheets(i).Name, 4) 'cut 4 letters and store in array 
Next 

On Error Resume Next 

For i = Count To 2 Step -1 
sval = arr(i) 'search value 
ReDim Preserve arr(1 To i - 1) 'downsize array 
index = Application.Match(sval, arr(), 0) 'find matching name in array 

    With Worksheets(index) 'lrow on ws to paste 
     Set lc = .Cells.Find(what:=Chr(42), after:=.Cells(1), searchdirection:=xlPrevious, _ 
         lookat:=xlPart, searchorder:=xlByRows, LookIn:=xlFormulas) 
    End With 
    With Worksheets(i) 'lrow on ws to copy 
     Set lc1 = .Cells.Find(what:=Chr(42), after:=.Cells(1), searchdirection:=xlPrevious, _ 
         lookat:=xlPart, searchorder:=xlByRows, LookIn:=xlFormulas) 
    End With 

    Worksheets(i).Range("A1:" & lc1.Address).Copy Worksheets(index).Range("A" & lc.Row + 1) 'copy paste 
    Worksheets(index).Name = sval 'rename to first 4 letters 
    Application.DisplayAlerts = False 
    Worksheets(i).Delete 
    Application.DisplayAlerts = True 
Next i 
End Sub 
+0

ウル応答のおかげで、しかし、私vbaを秀でるために全く新鮮で、これは私が説明しようとしていることに追いつくのは本当に難しいです。私はそれをより詳細に説明できるので、私は一歩一歩進むことができますか?どうもありがとうございます。 – wahwah

+0

pythonスクリプトを使用して同じ出力を得ることは可能ですか? – wahwah

+0

それ以上の言語でも可能です。私は、イブがそれを説明する方法で動作する例を追加しました。 – UGP

関連する問題