PCメモ

Excelを中心とした業務改善の記録

Excel VBA

複数セルの指定

複数セルの指定 Range(左上のセル,右上のセル) '① Range(Range("B2"), Range("B3")).Select '② Range(Cells(3, 3), Cells(4, 4)).Select '③ Range(Range("A2"), Range("A1").End(xlDown)).Select

ブックを開いて加工

Sub ブックを開いて加工() Dim openBook As Workbook Dim openPath As String '選択したブック名を格納 openPath = Application.GetOpenFilename("csv,*.csv") If openPath <> "False" Then '格納したブックを開く Set openBook = Workbooks.Open(openPath) …

自動実行(開く閉じる・シートアクティブ)

起動時 Private Sub Workbook_Open() MsgBox "hello world" End Sub 終了時 BeforeClose を使うとブックを閉じた時に実行される。 Private Sub Workbook_BeforeClose(Cancel As Boolean) MsgBox "さようなら" End Sub シートアクティブ 対象のシート選択時実…

参考図書

ExcelVBA 基本操作 辞書 Excel 基本操作 ピボットテーブル パワーピボット パワークエリ Access Word その他 VBAと同時にExcelの基礎もしっかりしておかないといろいろと遠回りになると思います。その意味でも、どんな操作があるのかをある程度知るという意…

全シートA1選択

全てのシートでA1を Dim i As Long For i = Sheets.Count To 1 Step -1 Sheets(i).Select Range("A1").Select Next For i = Sheets.Count To 1 Step -1 Step -1 とすることで、最後に1番目のシートが選択されて終了する。

不要シート削除

不要シートを削除する Dim i As Long For i = Sheets.Count To 1 Step -1 If Sheets(i).Name Like "★*" Then Else Sheets(i).Delete End If Next ★がついたシートは毎回使用する為削除しない。 ★以外のシートを全て削除する。 For i = Sheets.Count To 1 Ste…

自動PDF出力

シートをPDFにして保存する。 Dim i As Long Dim Name As String For i = 3 To Sheets.Count Name = ThisWorkbook.Path & _ "¥" & Sheets(i).Name & _ Format(Date, "yyyymmdd") Sheets(i).ExportAsFixedFormat Type:=xlTypePDF, Filename:=Name Next ★明細…

自動シートコピー★

明細シートを参照し、まとめシートを作成。 完成したまとめシートを後ろにコピーしていく。 Dim i As Long With Sheets("★明細") For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row Sheets("★まとめ").Copy after:=Sheets(Sheets.Count) ActiveSheet.Name …

Loopで参照

Loopで参照 Sub サンプル() Dim SheetM As Worksheet Dim SheetD As Worksheet Dim nM As Long Dim nD As Long Set SheetM = Worksheets("マスタ") Set SheetD = Worksheets("明細") nD = 2 Do Until SheetD.Cells(nD, 1) = "" nM = 2 Do Until SheetM.Cells…

複数ブック名を開いて編集

複数ブック名を開いて編集 '【ブック名取得】 Dim i As Long Dim bookname As String With Sheets("一覧表") .Columns("A").ClearContentsbookname = Dir(ThisWorkbook.Path & "¥処理前¥")Do While bookname <> "" i = i + 1 .Cells(i, 1) = bookname bookna…

VLOOKUP関数(VBA

Sub VLookup関数() Dim LastRow As Integer Dim i As Integer LastRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To LastRow Sheets("Sheet1").Cells(i, 2) = _ WorksheetFunction.VLookup(Cells(i, 1), _ ThisWorkbook.Sheets("マ…

目次

①ショートカットキー ②関数 ③マクロ ①ショートカットキー abv72.hatenablog.com ②関数 abv72.hatenablog.com ③マクロ abv72.hatenablog.com

変数の型

変数の型 変数宣言時にデータ型を指定することができる。 Dim 変数名 As データ型 データ型を指定しない場合は、自動的にバリアント型になる。 名称 データ型 格納データ 消費メモリ 長整数型 Long -2,147,4,83,648 ~ 2,147,4,83,648 の整数 4バイト 整数型…

編集後保存フォルダを移動

ブックを開いて編集する Dim i As Long Dim bookname As String bookname = Dir(ThisWorkbook.Path & "¥処理前¥") Workbooks.Open ThisWorkbook.Path & "¥処理前¥" & bookname '開いたブックに対して処理を行う。 ActiveWorkbook.Close savechanges:=Tru…

行・列の削除

行を削除する 範囲選択 シート指定 列の削除 範囲選択 シート指定 注意点 行を削除する Rowsの引数に行番号を指定してあげることで、その行を削除することができる。 Rows(3).Delete Rangeで指定し、EntireRowで行番号を取得することができる。 セル選択中の…

くるくるマクロ

名簿を参照して宛名を1つずつ差し込んでいく。 sheet1"A1"にsheet2A列のデータを差し込む。 'sheet2A列の最終行番号を取得 。 Dim LastRow As Long LastRow = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row 'ForNextで最終行まで差し込みを繰り…

連続データ

フィルハンドルでドラッグして連続データを作成する。 変数を使わずに、ベタ打ちの数式をAutoFillで連続データにする。 "B2"セルにvlookupを入力し、右のマスタから品名を表示させる。 Range("B2").Value = "=VLOOKUP(A2,$D:$E,2,0)" この数式をフィルハンド…

フィルター後削除

2列目でフィルターをかけて、"佐藤"を抽出。 見出し行以外を削除する。(行を一行下にずらす) フィルターを解除する。 With Range("A1").CurrentRegion .AutoFilter field:=2, Criteria1:="佐藤" .Offset(1, 0).EntireRow.Delete .AutoFilter End With with…

最終行の取得

データの最終行を取得する。 Sub Macro1 () Dim LastRow As Integer LastRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row End Sub Excelの最終行からEnd(xlUp)でデータ最終行まで行って行番号を取得する。 変数LastRowに格納。 解説 Sheet1の1行…