Макросом разнести данные движения склада в плоский файл - VBA

Узнай цену своей работы

Формулировка задачи:

Ребята у меня есть исходный файл движения склада, мне необходимо макросом разнести данные в плоский файл. Как реализовать? Голова кругом yes Файл с примером приложила. Оч надеюсь что сможете помочь мне

Решение задачи: «Макросом разнести данные движения склада в плоский файл»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Sub tt()
  4. Dim c As Range, r As Range, x As Long, i As Long, ii As Long
  5. Dim t As String, tt As String, fio As String, arr
  6.  
  7. Set r = Sheets(1).[b9].CurrentRegion
  8.  
  9. ReDim a(1 To r.Rows.Count - 4, 1 To 7)
  10. x = x + 1
  11. a(x, 1) = "Дата"
  12. a(x, 2) = "Склад"
  13. a(x, 3) = "Номенклатура"
  14. a(x, 4) = "Количество"
  15. a(x, 5) = "Документ"
  16. a(x, 6) = "Приход/Расход"
  17. a(x, 7) = "Контрагент"
  18.  
  19. For i = 4 To r.Rows.Count
  20.     Select Case r.Rows(i).Cells(1).IndentLevel
  21.         Case 0
  22.         If r.Rows(i).Cells(1).Font.Bold = True Then t = r.Rows(i).Cells(1)
  23.         Case 1
  24.         If r.Rows(i).Cells(1).Font.Bold = True Then tt = r.Rows(i).Cells(1)
  25.         Case 2
  26.         arr = Split(r.Rows(i).Cells(1), ",")
  27.         fio = arr(UBound(arr))
  28.             For ii = 2 To r.Columns.Count
  29.                 If r.Rows(i).Cells(ii) > 0 Then
  30.                 x = x + 1
  31.                 a(x, 1) = r.Rows(1).Cells(ii).MergeArea.Cells(1) '"Дата"
  32.                a(x, 2) = t '"Склад"
  33.                a(x, 3) = tt '"Номенклатура"
  34.                a(x, 4) = r.Rows(i).Cells(ii) '"Количество"
  35.                arr = Split(r.Rows(i).Cells(1), " от ")
  36.                 a(x, 5) = arr(0) '"Документ"
  37.                a(x, 6) = r.Rows(3).Cells(ii) '"Приход/Расход"
  38.                a(x, 7) = fio '"Контрагент"
  39.                End If
  40.             Next
  41.     End Select
  42. Next
  43.  
  44. With Workbooks.Add(1).Sheets(1).[a1].Resize(x, 7)
  45.     .Columns(4).NumberFormat = "0.000"
  46.     .Value = a
  47.     .Columns.AutoFit
  48. End With
  49.  
  50. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы