Excel VBA質問箱 IV

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

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


3399 / 13645 ツリー ←次へ | 前へ→

【62424】アウトライン化 初心者です。 09/7/21(火) 17:44 質問[未読]
【62430】Re:アウトライン化 りん 09/7/21(火) 23:13 発言[未読]
【62431】Re:アウトライン化 初心者です。 09/7/22(水) 10:03 質問[未読]
【62434】Re:アウトライン化 つるりん 09/7/22(水) 12:19 発言[未読]
【62438】Re:アウトライン化 SS 09/7/22(水) 15:32 発言[未読]
【62505】Re:アウトライン化 初心者です。 09/7/27(月) 11:13 質問[未読]
【62511】Re:アウトライン化 SS 09/7/27(月) 18:44 発言[未読]

【62424】アウトライン化
質問  初心者です。  - 09/7/21(火) 17:44 -

引用なし
パスワード
   100行程度のデータの中で
伝票NOをKEYに集計業を個別で作成しました。
この場合に、アウトラインを利用して
1.全明細、2.伝票NO計の行だけを見たいのですが
このようなものはマクロで作成できるものでしょうか?

伝票の
AA1
AA1計
AA2
AA2計
AA3
AA3計

どのたかマクロを教えてください。

【62430】Re:アウトライン化
発言  りん E-MAIL  - 09/7/21(火) 23:13 -

引用なし
パスワード
   初心者です。 さん、こんばんわ。
>100行程度のデータの中で
>伝票NOをKEYに集計業を個別で作成しました。
データ→集計を行なったということですか?

>この場合に、アウトラインを利用して
>1.全明細、2.伝票NO計の行だけを見たいのですが
全明細と伝票NO計ということは全体計だけ隠したいということですか?

【62431】Re:アウトライン化
質問  初心者です。  - 09/7/22(水) 10:03 -

引用なし
パスワード
   説明不足ですいません。

 集計機能を利用すると処理したい結果が実現できなかったので
 集計機能と同じようなことを個別にKEYを設定して処理しま
 した。
 
 提供ファイルはアウトライン付きの計の行のみ表示させて、必用な
 場合アウトラインのボタンにより個別明細を見れるようにしたいの
 です。

 理由は、6000行ぐらい明細があり、計の明細だけでも3000行程度
 あるので、見やすくしたいためです。

 もし、アウトラインの設定が難しい場合は、VLOOKUPで取得した項
 目の横の5項目のSUMのやり方を教えて下さい。
 単純にSUMしても、VLOOKUPの定義でIF文を利用して
 値を取得できない場合は表示しないとしているものが邪魔をして計算がで
 きません。
 
 提供後のセルの内容を数値で変更する場合があるので
 計算式を表示させるやり方を教えて貰うと助かります。

 長くなりましたが、宜しく御願いします。 

 

【62434】Re:アウトライン化
発言  つるりん  - 09/7/22(水) 12:19 -

引用なし
パスワード
   シートにはどのように入力されているのですか?
A列に明細、B列に金額で
各小計も同じ列にあるのでしょうか?

【62438】Re:アウトライン化
発言  SS  - 09/7/22(水) 15:32 -

引用なし
パスワード
   ▼初心者です。 さん:

こんにちは、普段アウトラインを使わないので
興味を持ち首を突っ込んでみました。
考えられているイメージはこんな感じですか?

   A      B
2  AAA      100
3  AAA      200
4  AAA      100
5  AAA      200
6  AAA     1,000
7  AAA      50
8  AAA計    1,650
9  BBB      50
10 BBB      100
11 BBB      200
12 BBB計     350
13 総合計   2,000

Sub Macro1()
'
  Dim Row1 As Double, Row2 As Double, Row3 As Double
  Dim Row4 As Double, Row5 As Double
  
  Selection.ClearOutline
  
  '番号検索はもっと良い方法があると思います。
  Row1 = Range("A:A").Find("AAA").Row
  Row2 = Range("A:A").Find("AAA計").Row - 1
  Row3 = Range("A:A").Find("BBB").Row
  Row5 = Range("A:A").Find("BBB計").Row
  Row4 = Row5 - 1
  
  Range(Cells(Row1, 1), Cells(Row5, 1)).Rows.Group
  Range(Cells(Row1, 1), Cells(Row2, 1)).Rows.Group
  Range(Cells(Row3, 1), Cells(Row4, 1)).Rows.Group
End Sub


>説明不足ですいません。
>
> 集計機能を利用すると処理したい結果が実現できなかったので
> 集計機能と同じようなことを個別にKEYを設定して処理しま
> した。
> 
> 提供ファイルはアウトライン付きの計の行のみ表示させて、必用な
> 場合アウトラインのボタンにより個別明細を見れるようにしたいの
> です。
>
> 理由は、6000行ぐらい明細があり、計の明細だけでも3000行程度
> あるので、見やすくしたいためです。
>
> もし、アウトラインの設定が難しい場合は、VLOOKUPで取得した項
> 目の横の5項目のSUMのやり方を教えて下さい。
> 単純にSUMしても、VLOOKUPの定義でIF文を利用して
> 値を取得できない場合は表示しないとしているものが邪魔をして計算がで
> きません。
> 
> 提供後のセルの内容を数値で変更する場合があるので
> 計算式を表示させるやり方を教えて貰うと助かります。
>
> 長くなりましたが、宜しく御願いします。 
>
>

【62505】Re:アウトライン化
質問  初心者です。  - 09/7/27(月) 11:13 -

引用なし
パスワード
   回答ありがとうございます。
まさにやりたいことは、回答もらった内容で
OKなのですが、伝票NOが複数あるので個
別に定義することは困難です。
この処理をうまくやる方法教えて下さい。
御願いします。

【62511】Re:アウトライン化
発言  SS  - 09/7/27(月) 18:44 -

引用なし
パスワード
   ▼初心者です。 さん:

正確なフォーマットが分からないので条件設定に不備があると思いますが
私ならこのような形で作成すると思います。
※同伝票番号内訳とその計は連続とすることが条件です。

    A    B
1        
2    伝票No    
3    AAA    
4    AAA    
5    AAA    
6    EEE計    
7    AAA    
8    AAA    
9    AAA計    
10    BBB    
11    BBB    
12    BBB    
13    BBB計    
14    DDD計    
15    CCC    
16    CCC
17    CCC
18    
19    CCC
20    CCC
21    CCC
22    CCC
23    CCC計
24    総合計

Sub Macro2()
  Dim RowStart As Long, RowStop As Long, Row1 As Long
  Dim txtNo As String
  Dim i As Long, j As Long
  
  Range("A1").ClearOutline
 
  RowStop = Range("A65536").End(xlUp).Row
  If RowStop = 1 Then Exit Sub
  
  'RowStart = Range("A1").End(xlDown).Row
  'If RowStart = RowStop Then RowStart = 1
  '空白とか項目表示があると面倒なのでStartは数値入力としました
  RowStart = 3
  
  'このグルーピングは必要かわかりません。
  Range(3 & ":" & RowStop - 1).Rows.Group
  
  txtNo = ""
  j = 0
  For i = RowStart To RowStop
    If Cells(i, 1).Value <> txtNo And _
            Cells(i, 1).Value <> "" Then
      If j = 0 And Right(Cells(i, 1).Value, 1) <> "計" Then
        txtNo = Cells(i, 1).Value
        Row1 = i
        j = 1
      ElseIf j = 1 And Cells(i, 1).Value = txtNo & "計" Then
        Range(Row1 & ":" & i - 1).Rows.Group
        j = 0
      Else
        '単独計は無視します
        '伝票番号が上と違う計は無視します
      End If
    End If
  Next i
End Sub

>回答ありがとうございます。
>まさにやりたいことは、回答もらった内容で
>OKなのですが、伝票NOが複数あるので個
>別に定義することは困難です。
>この処理をうまくやる方法教えて下さい。
>御願いします。

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