エクセル

point タイトル一覧 point
point  No.8 Excel 2007であるデータベースを並び替えと小計機能を使ってマクロ記録をしました。
Excel 2007であるデータベースを並び替えと小計機能を使ってマクロ記録をしました。
このデータベースにデータを追加しても作成したマクロは利用できますか。
 
 そのままでは利用できませんが、ある部分を変更すると利用できます。
「開発」タブの「Visual Basic」をクリックします。
そして、標準モジュールの「Module1」をダブルクリックします。
モジュール1のコードが表示されます。(あくまでもサンプルです。)

Sub 担当者別集計()
  Range("C6").Select
  ActiveWorkbook.Worksheets("6月売上明細").Sort.SortFields.Clear
  ActiveWorkbook.Worksheets("6月売上明細").Sort.SortFields.Add _
    Key:=Range("C6"),SortOn:=xlSortOnValues, Order:=xlAscending,_
    DataOption:=xlSortNormal
  With ActiveWorkbook.Worksheets("6月売上明細").Sort
    .SetRange Range("B6:H68")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
  End With
  Selection.Subtotal GroupBy:=2, Function:=xlSum, _
    TotalList:=Array(7),Replace:=True, PageBreaks:=False,_
    SummaryBelowData:=True
  Range("A1").Select
End Sub
※「 _ 」は、マクロが次行に継続する場合に使用します。

 表示されたコードの中の真ん中あたりの「.SetRange Range("B6:H68")」の「H68")の部分を、今後増えるであろうデータベースのレコード数に変更します。
仮に1,000レコードとすると、「.SetRange Range("B6:H1000")と変更します。
これでマクロは利用できます。

Sub 担当者別集計()
  Range("C6").Select
  ActiveWorkbook.Worksheets("6月売上明細").Sort.SortFields.Clear
  ActiveWorkbook.Worksheets("6月売上明細").Sort.SortFields.Add _
    Key:=Range("C6"),SortOn:=xlSortOnValues, Order:=xlAscending,_
    DataOption:=xlSortNormal
  With ActiveWorkbook.Worksheets("6月売上明細").Sort
    .SetRange Range("B6:H1000")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
  End With
  Selection.Subtotal GroupBy:=2, Function:=xlSum,_
    TotalList:=Array(7),Replace:=True, PageBreaks:=False,_
    SummaryBelowData:=True
  Range("A1").Select
End Sub

 さらにデータベースのレコード数を自動的に処理する場合は、少し専門的ですが、次のようになります(マクロ記録で不要な部分は削除しています)。

Sub 担当者別集計()
  Range("C6").Select
  n = Range("C6").CurrentRegion.Rows.Count + 4
  Range("B5:H" & n).Sort Key1:=Range("C6"), Order1:=xlAscending,_
    Header:=xlYes
  Selection.Subtotal GroupBy:=2, Function:=xlSum,_
    TotalList:=Array(7),Replace:=True, PageBreaks:=False,_
    SummaryBelowData:=True
  Range("A1").Select
End Sub

 とてもシンプルになります
この「n = Range("C6").CurrentRegion.Rows.Count」の部分がデータベースのレコードの最終行を取得しています。
並び替えは「Sort Key1」を使用してみました。


point  07 グラフを作成しましたが、グラフタイトルを表のタイトルと連動させたいのですが。
 グラフを作成しましたが、グラフタイトルが長い場合にいちいち入力するのが面倒です。
又、表のタイトルが変更になった時もグラフのタイトルを変更しなければなりません。
表のタイトルとグラフのタイトルを連動させたいのですが。

操作は簡単です。次のようにします。

1.グラフタイトルをクリックして選択します。
  グラフタイトルを編集状態にしません。

2.数式バーに「=」(半角です)を入力し、表のタイトルが入力されているセルをクリックします。
  図では、「ワイン販売報告」の文字が入力されている[セルA2]をクリックしています。
  注意する点は、「=」を入力するのは数式バーということです。
  グラフタイトルに「=」を入力し操作しても連動しません。

3.「Enter」キーを押して確定すると、グラフタイトルに表のタイトルが表示されます。
  これで、表のタイトルを変更するとグラフタイトルも変更になります。


point  06 エクセルでちょっとした文章を縦書きで作成したい
 ワードのように多機能ではありませんが、エクセルでもちょっとした文章を縦書きで作成することが出来ます。

操作方法

,泙此通常の横書きの文章を作成します。
 文章を作成する上での注意は、全て全角で入力することです。
 半角で入力した文字は縦書きになりません。
⊆,法⊇捗颪にしたいセル範囲を選択します。

「フォント」の先頭に半角の「@」を入力します。

ぁ孱釘遑遙紕髻廛ーを押すと、文字が90度回転して、縦書き文書になります。



point  05 あるシートに複数の表がありますが、それぞれの表を別々の用紙に印刷したいのですが。
 シートの中のひとつの表を印刷するには、表を選択して「印刷ダイアログボックス」の「印刷対象」で、「選択した部分」を選び印刷すればよいのですが、シートの中の複数の表を、それぞれ別々の用紙に印刷するには、次のように操作します。

操作方法

^刷する表を下図のようにそれぞれ選択します。
 まず、最初の表を選択し、次表以降は「Ctrl」キーを押しながら選択します。

◆屮侫.ぅ襦廛瓮縫紂爾ら「印刷」を選び、 印刷画面で「印刷対象」にある「選択した部分」を選び「OK」をクリックします。

これで、各表が別々の用紙に印刷されます。


point  04 コピーのとき列幅も一緒にコピーしたい
「コピー」し「貼り付け」ると列幅がコピーされない、列幅も一緒にコピーするにはどうするか。
 2つの方法があります。
 方法1
  列全体を選択し「コピー」ボタンを押してコピーします。
  コピー先を列で選択し、「貼り付け」ボタンをクリックします。
  列幅も一緒にコピーされます。
 
方法2(2段階で行います)
  コピー範囲を選択し、「コピー」します。
  コピー先をクリックで選択します。
  「編集」メニューから「形式を選択して貼り付け」をクリック。
  「列幅」にチェックを入れて「OK」 列幅のみコピーされます。
  続いて「貼り付け」ボタンをクリックします。 データ部分が貼り付けられます。