Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как перенести данные из одного файла в другой? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Как перенести данные из одного файла в другой? (Формулы/Formulas)
Как перенести данные из одного файла в другой?
mefisto Дата: Воскресенье, 12.11.2017, 21:58 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 116
Репутация: 0 ±
Замечаний: 20% ±

Не могу найти ответ. Вся надежда на знатоков из этого форума.
Переформулировал задачу. может так получится.

В общем есть файл "Primer" и файл "Shema". И нужно данные из файла "Shema" разнести в файле "Primer".
Нужно перенести строки из одного файла в столбец другого. При этом следующая ячейка из строки вносится через девять пустых ячеек, другими словами каждая десятая ячейка с данными.
Когда заканчиваются данные в первой строке, переносить нужно вторую и т.д. пока есть данные. Потому как в файле "Shema" массив данных может быть очень большим, больше 6 млн ячеек.
В файле примере надеюсь понятно, там конечно минимум данных.
Когда начал это делать в одном файле, то выдало сообщение что не хватает ресурсов.((

На Вас одна надежда.
Заранее спасибо))
К сообщению приложен файл: Primer.xlsx (11.8 Kb) · Shema.xlsx (7.0 Kb)
 
Ответить
СообщениеНе могу найти ответ. Вся надежда на знатоков из этого форума.
Переформулировал задачу. может так получится.

В общем есть файл "Primer" и файл "Shema". И нужно данные из файла "Shema" разнести в файле "Primer".
Нужно перенести строки из одного файла в столбец другого. При этом следующая ячейка из строки вносится через девять пустых ячеек, другими словами каждая десятая ячейка с данными.
Когда заканчиваются данные в первой строке, переносить нужно вторую и т.д. пока есть данные. Потому как в файле "Shema" массив данных может быть очень большим, больше 6 млн ячеек.
В файле примере надеюсь понятно, там конечно минимум данных.
Когда начал это делать в одном файле, то выдало сообщение что не хватает ресурсов.((

На Вас одна надежда.
Заранее спасибо))

Автор - mefisto
Дата добавления - 12.11.2017 в 21:58
Hugo Дата: Воскресенье, 12.11.2017, 22:14 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Как это 6 млн.? Только чуть более 3-х получится, согласно примера...
И даже если там по 6 ячеек в каждой строке - куда это всё класть собираетесь? Таких Primer'ов пока ещё нет...
А вообще это элементарно делается циклом по ячейкам - один цикл по строке пока есть данные, как закончились переходим на строку ниже.
И точно нужно переносить? Тогда проще копировать, а в конце убить все исходные данные.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеКак это 6 млн.? Только чуть более 3-х получится, согласно примера...
И даже если там по 6 ячеек в каждой строке - куда это всё класть собираетесь? Таких Primer'ов пока ещё нет...
А вообще это элементарно делается циклом по ячейкам - один цикл по строке пока есть данные, как закончились переходим на строку ниже.
И точно нужно переносить? Тогда проще копировать, а в конце убить все исходные данные.

Автор - Hugo
Дата добавления - 12.11.2017 в 22:14
mefisto Дата: Воскресенье, 12.11.2017, 22:22 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 116
Репутация: 0 ±
Замечаний: 20% ±

Так в пример ж вообще минимум. Откуда Вы взяли 3??
столбиков 2050, а строк 3250. Получается больше 6 млн ячеек. И это минимум, хочется больше.

А на счет цикла, с Вами даже спорить не буду. Но не знаю как)). Поэтому и обратился за помощью.
И еще ж не подряд вставлять а в каждую десятую ячейку столбика N, начиная с ячейки N6.
Буду признателен если поможете)
Спасибо.
 
Ответить
СообщениеТак в пример ж вообще минимум. Откуда Вы взяли 3??
столбиков 2050, а строк 3250. Получается больше 6 млн ячеек. И это минимум, хочется больше.

А на счет цикла, с Вами даже спорить не буду. Но не знаю как)). Поэтому и обратился за помощью.
И еще ж не подряд вставлять а в каждую десятую ячейку столбика N, начиная с ячейки N6.
Буду признателен если поможете)
Спасибо.

Автор - mefisto
Дата добавления - 12.11.2017 в 22:22
Hugo Дата: Воскресенье, 12.11.2017, 22:39 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
[vba]
Код
Option Explicit

Sub tt()
    Dim sh As Worksheet, c As Range, i&, ii&, x&
    Application.ScreenUpdating = False

    Set sh = Workbooks("Shema.xlsx").Sheets(1)
    i = 6 'начальная строка
    For ii = 1 To sh.Rows.Count
        If Not IsEmpty(sh.Cells(ii, 1)) Then
                    Application.StatusBar = "Копирую строку " & ii
            Call procedura(i&, ii&, sh)
        Else
            Exit For
        End If
    Next
    
    Application.StatusBar = False
    Application.ScreenUpdating = True

End Sub

Private Sub procedura(i&, ii&, sh As Object)
    Dim x&
    For x = 1 To sh.Columns.Count
        If Not IsEmpty(sh.Cells(ii, x)) Then
            sh.Cells(ii, x).Copy Range("N" & i)
            i = i + 10 'шаг
        Else
            Exit For
        End If
    Next
End Sub
[/vba]
Выполнять при открытых обоих файлах и активном окне Primer.
Но на второй вопрос так и не ответили - ну сами виноваты, будете сами и дорабатывать.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение[vba]
Код
Option Explicit

Sub tt()
    Dim sh As Worksheet, c As Range, i&, ii&, x&
    Application.ScreenUpdating = False

    Set sh = Workbooks("Shema.xlsx").Sheets(1)
    i = 6 'начальная строка
    For ii = 1 To sh.Rows.Count
        If Not IsEmpty(sh.Cells(ii, 1)) Then
                    Application.StatusBar = "Копирую строку " & ii
            Call procedura(i&, ii&, sh)
        Else
            Exit For
        End If
    Next
    
    Application.StatusBar = False
    Application.ScreenUpdating = True

End Sub

Private Sub procedura(i&, ii&, sh As Object)
    Dim x&
    For x = 1 To sh.Columns.Count
        If Not IsEmpty(sh.Cells(ii, x)) Then
            sh.Cells(ii, x).Copy Range("N" & i)
            i = i + 10 'шаг
        Else
            Exit For
        End If
    Next
End Sub
[/vba]
Выполнять при открытых обоих файлах и активном окне Primer.
Но на второй вопрос так и не ответили - ну сами виноваты, будете сами и дорабатывать.

Автор - Hugo
Дата добавления - 12.11.2017 в 22:39
mefisto Дата: Воскресенье, 12.11.2017, 22:41 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 116
Репутация: 0 ±
Замечаний: 20% ±

:( на какой второй вопрос?
Сам дорабатывать это не про меня))
Спасибо что откликнулись... Буду ковырять.
 
Ответить
Сообщение:( на какой второй вопрос?
Сам дорабатывать это не про меня))
Спасибо что откликнулись... Буду ковырять.

Автор - mefisto
Дата добавления - 12.11.2017 в 22:41
Hugo Дата: Воскресенье, 12.11.2017, 22:42 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Второй вопрос там, где второй вопросительный знак. Логично?


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеВторой вопрос там, где второй вопросительный знак. Логично?

Автор - Hugo
Дата добавления - 12.11.2017 в 22:42
mefisto Дата: Воскресенье, 12.11.2017, 22:47 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 116
Репутация: 0 ±
Замечаний: 20% ±

Значит не понял вопроса. Не серчайте.
Ваше решение вопроса вроде полностью удовлетворяет. Не понял что нужно дорабатывать.
Пошел повышать Вам репутацию).
Еще раз спасибо!!!!
 
Ответить
СообщениеЗначит не понял вопроса. Не серчайте.
Ваше решение вопроса вроде полностью удовлетворяет. Не понял что нужно дорабатывать.
Пошел повышать Вам репутацию).
Еще раз спасибо!!!!

Автор - mefisto
Дата добавления - 12.11.2017 в 22:47
Hugo Дата: Воскресенье, 12.11.2017, 23:03 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Суть вопроса в том, что Вы только где-то 100000 ячеек скопируете (заметьте, я не делелал переноса!), куда девать остальные 5900000 - неизвестно...


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеСуть вопроса в том, что Вы только где-то 100000 ячеек скопируете (заметьте, я не делелал переноса!), куда девать остальные 5900000 - неизвестно...

Автор - Hugo
Дата добавления - 12.11.2017 в 23:03
mefisto Дата: Воскресенье, 12.11.2017, 23:05 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 116
Репутация: 0 ±
Замечаний: 20% ±

Я не предполагал что есть какое-то ограничение. Обработало 1 млн и выдало ERROR.
Возможно придется резать файл Shema на куски и обрабатывать частями. Пока не представляю, но буду пробовать.
Спасибо!
 
Ответить
СообщениеЯ не предполагал что есть какое-то ограничение. Обработало 1 млн и выдало ERROR.
Возможно придется резать файл Shema на куски и обрабатывать частями. Пока не представляю, но буду пробовать.
Спасибо!

Автор - mefisto
Дата добавления - 12.11.2017 в 23:05
mefisto Дата: Воскресенье, 12.11.2017, 23:14 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 116
Репутация: 0 ±
Замечаний: 20% ±

ой... не 1 млн... 1 млн это строк. а если каждая 10-я строка используется... то Вы правы, около 100 тыс ячеек :'(
 
Ответить
Сообщениеой... не 1 млн... 1 млн это строк. а если каждая 10-я строка используется... то Вы правы, около 100 тыс ячеек :'(

Автор - mefisto
Дата добавления - 12.11.2017 в 23:14
Hugo Дата: Воскресенье, 12.11.2017, 23:40 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Вариант - запускать как и прежде.
В конце делайте с этими файлами что хотите. Но я бы в коде их сразу и сохранял и закрывал.
[vba]
Код
Option Explicit

Sub tt()
    Dim sh As Worksheet, shablon As Worksheet, c As Range, i&, ii&, x&
    Application.ScreenUpdating = False

    Set shablon = ActiveSheet
    shablon.Copy

    Set sh = Workbooks("Shema.xlsx").Sheets(1)
    i = 6    'начальная строка
    For ii = 1 To sh.Rows.Count
        If Not IsEmpty(sh.Cells(ii, 1)) Then
            Application.StatusBar = "Копирую строку " & ii
            Call procedura(i&, ii&, sh, shablon)
        Else
            Exit For
        End If
    Next

    Application.StatusBar = False
    Application.ScreenUpdating = True

End Sub

Private Sub procedura(i&, ii&, sh As Object, shablon As Object)
    Dim x&
    For x = 1 To sh.Columns.Count
        If Not IsEmpty(sh.Cells(ii, x)) Then
            sh.Cells(ii, x).Copy Range("N" & i)
            i = i + 10    'шаг
            If i > Rows.Count Then
                shablon.Copy
                i = 6
            End If
        Else
            Exit For
        End If
    Next
End Sub
[/vba]
Можно перед копированием шаблона в процедуре добавить строку
[vba]
Код
            ActiveWorkbook.Close True
[/vba]
Правда придётся в ручном режиме подтверждать сохранение, зато можно оперативно дать какое угодно имя.


excel@nxt.ru
webmoney: E265281470651 Z422237915069


Сообщение отредактировал Hugo - Воскресенье, 12.11.2017, 23:47
 
Ответить
СообщениеВариант - запускать как и прежде.
В конце делайте с этими файлами что хотите. Но я бы в коде их сразу и сохранял и закрывал.
[vba]
Код
Option Explicit

Sub tt()
    Dim sh As Worksheet, shablon As Worksheet, c As Range, i&, ii&, x&
    Application.ScreenUpdating = False

    Set shablon = ActiveSheet
    shablon.Copy

    Set sh = Workbooks("Shema.xlsx").Sheets(1)
    i = 6    'начальная строка
    For ii = 1 To sh.Rows.Count
        If Not IsEmpty(sh.Cells(ii, 1)) Then
            Application.StatusBar = "Копирую строку " & ii
            Call procedura(i&, ii&, sh, shablon)
        Else
            Exit For
        End If
    Next

    Application.StatusBar = False
    Application.ScreenUpdating = True

End Sub

Private Sub procedura(i&, ii&, sh As Object, shablon As Object)
    Dim x&
    For x = 1 To sh.Columns.Count
        If Not IsEmpty(sh.Cells(ii, x)) Then
            sh.Cells(ii, x).Copy Range("N" & i)
            i = i + 10    'шаг
            If i > Rows.Count Then
                shablon.Copy
                i = 6
            End If
        Else
            Exit For
        End If
    Next
End Sub
[/vba]
Можно перед копированием шаблона в процедуре добавить строку
[vba]
Код
            ActiveWorkbook.Close True
[/vba]
Правда придётся в ручном режиме подтверждать сохранение, зато можно оперативно дать какое угодно имя.

Автор - Hugo
Дата добавления - 12.11.2017 в 23:40
mefisto Дата: Воскресенье, 12.11.2017, 23:50 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 116
Репутация: 0 ±
Замечаний: 20% ±

Огромное спасибо!
 
Ответить
СообщениеОгромное спасибо!

Автор - mefisto
Дата добавления - 12.11.2017 в 23:50
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Как перенести данные из одного файла в другой? (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!