Разбить один лист excel на несколько листов на основе значения столбца
Может быть, это повторится, но я нигде не получу решения.
Я хочу разбить файл excel на несколько листов или несколько файлов.
У меня есть некоторый код на VBA, но он мне строго нужен в оконном приложении c#. Я не могу преобразовать код VBA в c#.
У меня есть файл типа:
Название Месяц Зарплата
[А] января 50к
[B] январь 55k
[А] 45к февраля
[B] февраль 60K
Я хочу создать отдельный лист для каждого имени, например:
Название Месяц Зарплата
[А] января 50к
[А] 45к февраля
И
Название Месяц Зарплата
[B] январь 55k
[B] февраль 60K
Мне нужны два отдельных файла. Один для имени [A] , а другой для имени [B], имеющие свои соответствующие строки только в каждом файле.
Что я уже пробовал:
Код, с которым я работаю в VBA. Но некоторые классы отличаются в C#. Поэтому я не могу реализовать его на языке Си#
Option Explicit Sub SplitIntoSeperateFiles() Dim OutBook As Workbook Dim DataSheet As Worksheet, OutSheet As Worksheet Dim FilterRange As Range Dim UniqueNames As New Collection Dim LastRow As Long, LastCol As Long, _ NameCol As Long, Index As Long Dim OutName As String 'set references and variables up-front for ease-of-use Set DataSheet = ThisWorkbook.Worksheets("Sheet1") NameCol = 1 LastRow = DataSheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row LastCol = DataSheet.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column Set FilterRange = Range(DataSheet.Cells(1, NameCol), DataSheet.Cells(LastRow, LastCol)) 'loop through the name column and store unique names in a collection For Index = 2 To LastRow On Error Resume Next UniqueNames.Add Item:=DataSheet.Cells(Index, NameCol), Key:=DataSheet.Cells(Index, NameCol) On Error GoTo 0 Next Index 'iterate through the unique names collection, writing 'to new workbooks and saving as the group name .xls Application.DisplayAlerts = False For Index = 1 To UniqueNames.Count Set OutBook = Workbooks.Add Set OutSheet = OutBook.Sheets(1) With FilterRange .AutoFilter Field:=NameCol, Criteria1:=UniqueNames(Index) .SpecialCells(xlCellTypeVisible).Copy OutSheet.Range("A1") End With OutName = ThisWorkbook.FullName OutName = Left(OutName, InStrRev(OutName, "\")) OutName = OutName & UniqueNames(Index) OutBook.SaveAs Filename:=OutName, FileFormat:=xlExcel8 OutBook.Close SaveChanges:=False Call ClearAllFilters(DataSheet) Next Index Application.DisplayAlerts = True End Sub 'safely clear all the filters on data sheet Sub ClearAllFilters(TargetSheet As Worksheet) With TargetSheet TargetSheet.AutoFilterMode = False If .FilterMode Then .ShowAllData End If End With End Sub
[no name]
И что же? Неужели вы думаете, что мы будем кодировать это для вас, основываясь на расплывчатом описании и неизвестных бизнес-правилах? Этого не случится.
Bhola Ram Sahu
Спасибо за ваш любезный ответ. Я знаю, что ты не сделаешь этого для меня. Пожалуйста, не тратьте свое время на такие комментарии.
Есть еще хорошие люди, которые могут предложить мне любую ссылку.
[no name]
Ну, раз вы не потрудились задать вопрос или описать реальную проблему, почему вы тратите наше время впустую?
Я бы предложил www.google.com.
Bhola Ram Sahu
http://stackoverflow.com/questions/23106555/split-file-into-multiple-files-in-excel
[no name]
И так что же этот не-законный-вопрос на SO имеет отношение к вашему не-законному-вопросу?
ZurdoDev
Никто не напишет весь код за вас, так что у вас есть конкретный вопрос?
Bhola Ram Sahu
Там может быть какая-то ссылка или форум, о которых я не знаю. Любой может предложить мне это. Спасибо за ваш ответ.
ZurdoDev
Я не знаком ни с какими форумами, которые сделают всю работу за вас. Извиняюсь.
Bhola Ram Sahu
http://stackoverflow.com/questions/23106555/split-file-into-multiple-files-in-excel