Как преобразовать несколько строк (в Excel) на одном листе в несколько файлов CSV

Я хочу преобразовать несколько строк (в соответствии с группой) в несколько CSV. мой единственный лист в Excel содержит почти 3000 строк и 5 столбцов. теперь я хочу, чтобы каждая группа из моего листа Excel конвертировалась в файл csv.

Например

1 ali Khan [email protected] a1

2 juliet ibm [email protected] a1

3 laura ann [email protected] b1

4 abcd ewqa [email protected] b1

5 annia franics [email protected] c1

теперь я хочу извлечь эти строки в отдельный CSV на основе группы (a1, b1, c1 ...). Каждая группа создает новый CSV.

Просто нужно решение для этого. Неважно, предлагаете ли вы какой-либо бесплатный инструмент или какой-либо код.


person user3532061    schedule 14.04.2014    source источник
comment
Если вам нужно одношаговое решение, я верю, вам придется написать код VBA, но я бы просто заказал его по имени группы, затем сохранил его как один файл CSV и, наконец, вручную создал (скопировал / вставил) другие CSV. Я знаю, что это не изящное ИТ-решение, но оно выполняет свою работу!   -  person elrado    schedule 14.04.2014
comment
Вам нужно постоянное решение или только одноразовое решение. Кроме того, что вы пробовали?   -  person Rikon    schedule 14.04.2014
comment
Я думаю, что @elrado - хорошее начало, но вместо сортировки / копирования / вставки я бы посоветовал вам (1) добавить строку заголовка с FirstName LastName Email Group в строку 1, затем (2) использовать встроенные в Excel функции Autofilter, чтобы скрыть все, не члены группы и, наконец, (3) сохраните каждую отфильтрованную группу как CSV   -  person Dan Wagner    schedule 14.04.2014


Ответы (1)


Используя этот код, вы копируете и вставляете на другой лист и создаете файлы CSV.

Dim RowSt As Integer
Dim RowLs As Integer
Dim StriI As String
Dim StriL As String

RowSt = 4
RowLs = 4
StriI = Range("F" & RowLs).Value
StriL = Range("F" & RowLs).Value
While Range("F" & RowLs).Value <> ""
    StriL = Range("F" & RowLs).Value
    If StriL <> StriI Then
        Range("B" & RowSt & ":F" & RowLs - 1).Copy
        Sheets("Sheet2").Select
        Range("A1").Select
        ActiveSheet.Paste
        Selection.Clear
        Sheets("Sheet1").Select
        ActiveWorkbook.SaveAs Filename:="E:\0\A\" & StriI & ".csv", FileFormat:=xlCSVMSDOS, CreateBackup:=False
        StriI = StriL
        RowSt = RowLs
    End If
    RowLs = RowLs + 1
Wend
Range("B" & RowSt & ":F" & RowLs - 1).Copy
Sheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
Selection.Clear
Sheets("Sheet1").Select
ActiveWorkbook.SaveAs Filename:="E:\0\A\" & StriI & ".csv", FileFormat:=xlCSVMSDOS, CreateBackup:=False
Range("A1").Select
person user3514930    schedule 14.04.2014
comment
Спасибо за помощь. До сих пор я делал это вручную, но проблема в том, что со временем данные увеличиваются, и это не идеальное решение. Поэтому я должен найти способ с этим справиться. Я попробую с кодом, который вы присылаете. - person user3532061; 16.04.2014