[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シート別に小分けにしたい』(えめら)
シート1 A B C D 1 商品 個数 業者 値段 2 A3用紙 3 ◎ 1200 3 A4用紙 1 ▼ 4500 4 教科書 1 ▼ 2300 5 マウス 4 ◎ 600 6 プリンタ 1 ◎ 500 7 パソコン 0 □ 2000 8 インクA 2 ◎ 600 9 インクB 0 □ 500 10 インクC 1 □ 700
シート2 シート3 シート4 ◎業者のみの ▼業者のみの □業者のみの 商品 個数 値段 商品 個数 値段 商品 個数 値段
シート1にこうゆう表があり、シート2、3、4に分けたいです。 個数は1個だったり2個だったりします。 0個のときはシート2、3、4には表示させたくないです。
こうゆうときはどうすればいいのですか?教えてください。 Excel2003 WindowsXP
Dim mySH1 As Worksheet Dim mySH As Worksheet Dim myR As Range Dim sh As Worksheet Dim myVal As Variant Dim i As Integer Dim j As Integer
Application.ScreenUpdating = False
' 「シート1」以外のシートの削除 For Each sh In ThisWorkbook.Worksheets If Not sh.Name = "Sheet1" Then Application.DisplayAlerts = False sh.Delete Application.DisplayAlerts = True End If Next
'重複のない会社名の書き出し(Z列) Set mySH1 = Worksheets("Sheet1") Set myR = mySH1.Range("A1").CurrentRegion myR.Columns(3).AdvancedFilter xlFilterCopy, _ copytorange:=mySH1.Range("Z1"), unique:=True myVal = mySH1.Range("Z2", mySH1.Range("Z65536").End(xlUp)).Value
'会社名で抽出 For i = 1 To UBound(myVal, 1) 'シートを追加して Set mySH = Worksheets.Add(after:=Sheets(Sheets.Count)) mySH.Name = myVal(i, 1) & "のデータ"
'オートフィルター With myR .AutoFilter field:=3, Criteria1:=myVal(i, 1) .Copy mySH.Range("A65536").End(xlUp) .AutoFilter End With
'会社名の列削除、個数=0の行削除 With mySH .Columns(3).Delete For j = .Range("A65536").End(xlUp).Row To 2 Step -1 If .Cells(j, 2).Value = 0 Then .Cells(j, 2).EntireRow.Delete End If Next j End With Next i mySH1.Range("Z:Z").ClearContents Application.ScreenUpdating = True
End Sub
read-cnt: 45
(えめら)すみません。私パソコン初心者で・・・
これは何処に入れれば良いのですか?
Subってどうゆう意味ですか?
教えて下さい。お願い致します。
こんにちわ
1) エクセル画面より Alt + F11 でVBEを起動 2) 「挿入」 -> 「標準もジュール」,右空白部分に下記コードを貼り付ける。 3) x をクリックしてエクセル画面に戻る 4) 「ツール」 -> 「マクロ」 -> 「マクロ」で "test" を選択して「実行」
Sub test() Dim dic As Object, w, x, y Dim i As Long, ii As Long Dim ws As Worksheet Set dic = CreateObject("Scripting.Dictionary") With Sheets("sheet1") a = .Range("a1").CurrentRegion.Resize(, 4).Value End With For i = 2 To UBound(a, 1) If Not IsEmpty(a(i, 3)) Then If Not dic.exists(a(i, 3)) Then ReDim w(3, 0) For ii = 0 To 3 w(ii, 0) = a(i, ii + 1) Next dic.Add a(i, 3), w Else w = dic(a(i, 3)) ReDim Preserve w(3, UBound(w, 2) + 1) For ii = 0 To 3 w(ii, UBound(w, 2)) = a(i, ii + 1) Next dic(a(i, 3)) = w End If End If Next x = dic.keys: y = dic.items: Set dic = Nothing For i = 0 To UBound(x) On Error Resume Next Set ws = Sheets(x(i)) If ws Is Nothing Then Set ws = Sheets.Add ws.Name = x(i) End If Err.Clear With ws.Range("a1") .CurrentRegion.ClearContents .Resize(, 4) = Application.Index(a, 1) .Offset(1).Resize(UBound(y(i), 2) + 1, UBound(y(i), 1) + 1) = _ Application.Transpose(y(i)) End With Set ws = Nothing Next Erase a, x, y End Sub (seiya)
しかし・・・
シート1で個数を変えるとシート2、3、4が変わってないいですが、
自動的に変わるとかできるんですか?
後、シート2、3、4には業者は表示したくないんです。
ぬくやり方とかできるんですか?
ほんと勉強不足ですみません。
まずコードを下記に上書きしてください。 Sub test() Dim dic As Object, w, x, y Dim i As Long, ii As Long Dim ws As Worksheet Set dic = CreateObject("Scripting.Dictionary") With Application .EnableEvents = False .ScreenUpdating = False End With With Sheets("sheet1") A = .Range("a1").CurrentRegion.Resize(, 4).Value End With For i = 2 To UBound(A, 1) If Not IsEmpty(A(i, 3)) Then If Not dic.exists(A(i, 3)) Then ReDim w(3, 0) For ii = 0 To 3 w(ii, 0) = A(i, ii + 1) Next dic.Add A(i, 3), w Else w = dic(A(i, 3)) ReDim Preserve w(3, UBound(w, 2) + 1) For ii = 0 To 3 w(ii, UBound(w, 2)) = A(i, ii + 1) Next dic(A(i, 3)) = w End If End If Next x = dic.keys: y = dic.items: Set dic = Nothing For i = 0 To UBound(x) On Error Resume Next Set ws = Sheets(x(i)) If ws Is Nothing Then Set ws = Sheets.Add ws.Name = x(i) End If Err.Clear With ws.Range("a1") .CurrentRegion.ClearContents .Resize(, 4) = Application.Index(A, 1) .Offset(1).Resize(UBound(y(i), 2) + 1, UBound(y(i), 1) + 1) = _ Application.Transpose(y(i)) ws.Columns(3).Delete End With Set ws = Nothing Next Erase A, x, y With Application .EnableEvents = true .ScreenUpdating = true End With End Sub
次に、VBE画面上の左側にThisWorkbookというアイコンがありますのでWクリック
Private Sub Workbook_SheetActivate(ByVal Sh As Object) test End Sub
を貼り付け(seiya)
ありがとうございます。
ThisWorkbookというアイコンがありません。VBA上にあるんですよね??
隠れてしまったのでしょうか?
お願い致します。
(えめら)
すみますん。ありました。頑張ってみます。
また分からなかったら教えてください。
ほんと助かりました!!
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.