Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


20118 / 76732 ←次へ | 前へ→

【62037】Re:行の挿入について(続き)
発言  kanabun  - 09/6/17(水) 21:52 -

引用なし
パスワード
   こんばんは。

あと、ま、これは蛇足ですけど、
コピー元のデータを 配列 に入れておいて、
もうひとつの 配列 に 条件付きで行処理をして転記して
最後にこの配列をまとめて転記先の範囲に値だけ書き込む
という手もありまして。。。

配列内でデータを再配置するのは高速化の常用手段ですので
参考までにサンプルをアップしておきます。

新規「標準モジュール」を追加してそこに
Option Explicit 行からコピーして お試しください。
(注)
 ・CSVデータは「TMP1」シートの31行目からあるものと仮定。
 ・転記先シートは Worksheets(3) としています。
 ・このシートの3行目に項目見出しがあり、
   4行目以降にデータを貼り付けるものと仮定しています。
 このあたりは 適宜修正してください。

'-------------------------------------- 新規Module
Option Explicit

Enum 列番号
 行番号 = 1
 適用 = 2
 数量 = 3
 単位 = 4
 単価 = 5
 金額 = 6
End Enum


Sub 見積り作成6()
 Dim WS As Worksheet
 Dim i  As Long
 Dim j  As Long
 Dim newLine As Long
 Dim PostAddLine As Long
 Dim v 'もとのデータ
 Dim u '転記用データ

 With Worksheets("TMP1") '一時シートのデータを配列に入れる
  v = .Range("A31", .Cells(Rows.Count, 2).End(xlUp)) _
    .Resize(, 6).Value
 End With
 
 '転記先シートの書式Copy  'この部分 吟味されてません
 Set WS = Worksheets(3)
 If UBound(v) > 29 Then
   With WS.Range("A4")
     .Resize(29, 6).Copy .Offset(29)
     .Offset(29).Resize(29, 6).RowHeight = 27
   End With
 End If
 
 ReDim u(1 To 29, 1 To 金額)
 newLine = 1
 For i = 1 To UBound(v)
   PostAddLine = 0
   '行番号欄に記載のあったとき
   str行番号 = v(i, 行番号)
   If Len(str行番号) > 0 Then
     'マイナス行番号を カッコ付き行番号にします
     If str行番号 Like "-*" Then
      v(i, 行番号) = "'(" & Mid(str行番号, 2) & ")"
     End If
   End If
   
   '転記行 条件チェック
   If v(i, 適用) Like "*合*計*" Then
    PostAddLine = 1         '◆下に空行挿入
   
   ElseIf v(i, 適用) Like "*値*引*" Then '「値引」の文字あり
    newLine = newLine + 1      '◆上に空行挿入
   
   ElseIf v(i, 単位) Like "式" And IsEmpty(v(i, 単価)) Then
    '単位欄が「式」で 単価欄に記載がないときは
      newLine = newLine + 1    '◆上に空行挿入
   End If
   '指定の行に値転記
   For j = 1 To 金額
    u(newLine, j) = v(i, j)
   Next
   newLine = newLine + 1 + PostAddLine  '◆次の転記行
 Next
  
 WS.Range("A4").Resize(newLine - 1, 6).Value = u

End Sub

69 hits

【62024】行の挿入について(続き) mori 09/6/17(水) 13:17 質問
【62031】Re:行の挿入について(続き) kanabun 09/6/17(水) 14:18 発言
【62033】Re:行の挿入について(続き) mori 09/6/17(水) 19:39 発言
【62034】Re:行の挿入について(続き) kanabun 09/6/17(水) 19:51 発言
【62035】Re:行の挿入について(続き) kanabun 09/6/17(水) 20:22 回答
【62049】Re:行の挿入について(続き) mori 09/6/18(木) 21:19 お礼
【62037】Re:行の挿入について(続き) kanabun 09/6/17(水) 21:52 発言
【62036】Re:行の挿入について(続き) かみちゃん 09/6/17(水) 20:58 発言
【62050】Re:行の挿入について(続き) mori 09/6/18(木) 21:25 お礼

20118 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free