Excel VBA質問箱 IV

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

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


7289 / 13644 ツリー ←次へ | 前へ→

【40006】EXCEL2000での集計など 質問(煮詰まった) 06/7/5(水) 11:23 質問[未読]
【40021】Re:EXCEL2000での集計など Kein 06/7/5(水) 16:37 回答[未読]
【40023】Re:EXCEL2000での集計など 質問(煮詰まった) 06/7/5(水) 16:44 お礼[未読]
【40022】Re:EXCEL2000での集計など Kein 06/7/5(水) 16:39 発言[未読]
【40024】Re:EXCEL2000での集計など 質問(煮詰まった) 06/7/5(水) 16:51 お礼[未読]
【40029】Re:EXCEL2000での集計など Kein 06/7/5(水) 19:05 回答[未読]
【40055】Re:EXCEL2000での集計など 質問(初心者A氏) 06/7/6(木) 9:10 質問[未読]

【40006】EXCEL2000での集計など
質問  質問(煮詰まった)  - 06/7/5(水) 11:23 -

引用なし
パスワード
   集計の方法で教えて下さい。完全に煮詰まりました。

下記のようなケースをたとえて
 見出しシートで本籍、生年月日を指定してその貯金額を
 見出しシートに表示する。

ファイル読み込みは別シートで読み込ませてその内容を
利用する。


名前  生年月日  貯金  本籍
A    2006/02/01 10   東京
B    2006/02/02 20   埼玉
C    2006/01/03 30   東京
D    2006/01/04 40   埼玉
E    2006/01/05 50   東京
F    2006/01/06 60   千葉


質問1. EXCEL2000の集計機能を利用して処理しようと
    しています。
    千葉 計や東京 計を本籍のたて列からユニークに指定できる方法を教えて下さい。

質問2. オートフィルターでの条件指定方法で
    その条件を条件シートから渡す場合の
    変数の使いからなどあれば教えて下さい。

以上お願いします。

【40021】Re:EXCEL2000での集計など
回答  Kein  - 06/7/5(水) 16:37 -

引用なし
パスワード
   質問1について
集計機能で本籍別の計を求めたいなら、事前に本籍をキーにして表全体を
ソートしておかなければなりません。それがダメなら

Range("AA:AB").ClearContents
Range("D1", Range("D65536").End(xlUp)).AdvancedFilter _
xlFilterCopy, , Range("AA1"), True
Range("AB1").Value = "合計"
With Range("AA2", Range("AA1").End(xlDown)).Offset(, 1)
  .Formula = "=SUMIF($D:$D,$AA2,$C:$C)"
  .Value = .Value
End With
ActiveWindow.ScrollColumn = 27

などと、作業列に SUMIF関数 を埋め込んで集計する方法もあります。

【40022】Re:EXCEL2000での集計など
発言  Kein  - 06/7/5(水) 16:39 -

引用なし
パスワード
   質問2については、もう少し具体的に(どのセルにあるどんな型の値なのかを)
説明してもらわないと回答できません。

【40023】Re:EXCEL2000での集計など
お礼  質問(煮詰まった)  - 06/7/5(水) 16:44 -

引用なし
パスワード
   ありがとうございます。
試して見ます。

【40024】Re:EXCEL2000での集計など
お礼  質問(煮詰まった)  - 06/7/5(水) 16:51 -

引用なし
パスワード
   ▼Kein さん:
>質問2については、もう少し具体的に(どのセルにあるどんな型の値なのかを)
>説明してもらわないと回答できません。

 お世話様です。

 たとえば本籍は東京で、生年月日の上6桁が200602のもののみを抽出
 したい場合に
 シートに東京、200602は指定するとした場合のことになります。

 通常のマクロだと
 ="東京"とかになるのを、A2とかでしていしたいのですが・・・

【40029】Re:EXCEL2000での集計など
回答  Kein  - 06/7/5(水) 19:05 -

引用なし
パスワード
   検索条件を入力するシートの名前を "条件" として、
表のあるシートのシートモジュールに、以下のイベントマクロを
入れて下さい。1行目のセルのみ、ダブルクリックすると入力フォームが
出てきます。そこへ例えば 200601 と 東京 を入力すれば、抽出できる
値が見つかれば自動的にフィルターをかけます。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
  Dim Dnum As Long
  Dim MySt As String
  Dim Flg As Boolean
  Const Pmt1 As String = _
  "抽出する生年月日の年と月を yyyymm形式 で入力して下さい"
  Const Pmt2 As String = _
  "抽出する本籍を入力して下さい"
 
  If Target.Row > 1 Then Exit Sub
  Cancel = True
  With ActiveSheet
   If .FilterMode Then .ShowAllData
  End With
  Range("E:E").ClearContents
  Range("E1").Value = "CheckDate"
  With Range("B2", Range("B65536").End(xlUp)).Offset(, 3)
   .Formula = "=IF(MONTH($B2)<10,YEAR($B2)&""0""&MONTH($B2)" & _
   ",YEAR($B2)&MONTH($B2))"
   .Value = .Value
  End With
  With Application
   Do
     Dnum = .InputBox(Pmt1, Type:=1)
     If Dnum = False Then GoTo ELine
   Loop While Len(Dnum) <> 4
   If IsError(.Match(Dnum, Range("$E:$E"), 0)) Then
     Flg = True: GoTo ELine
   End If
   MySt = .InputBox(Pmt2, Type:=2)
   If MySt = "False" Then GoTo ELine
   If IsError(.Match(MySt, Range("$D:$D"), 0)) Then
     Flg = True: GoTo ELine
   End If
   .ScreenUpdating = False
  End With
  On Error Resume Next
  ActiveSheet.ShowAllData
  If Err.Number <> 0 Then Err.Clear
  On Error GoTo 0
  With Worksheets("条件")
   .Range("A1:B2").ClearContents
   .Range("A1:B1").Value = Array("本籍", "CheckDate")
   .Range("A2:B2").Value = Array(MySt, Dnum)
   Range("A1").CurrentRegion.AdvancedFilter xlFilterInPlace, _
   .Range("A1:B2"), , False
  End With
ELine:
  If Flg Then MsgBox "抽出する値が見つかりませんでした", 48
  Range("E:E").ClearContents
  Application.ScreenUpdating = True
End Sub

【40055】Re:EXCEL2000での集計など
質問  質問(初心者A氏)  - 06/7/6(木) 9:10 -

引用なし
パスワード
   ありがとうございました。
助かります。

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