PCメモ

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

2020-01-01から1年間の記事一覧

チェックした行の削除

D列に×を入力した行を削除する。 '最終行の取得 Dim LastRow As Long LastRow = Cells(Rows.Count, 1).End(xlUp).Row Dim i As Long For i = LastRow To 2 Step -1 '×と書かれているかどうか If Range("D" & i).Value = "×" Then Rows(i).Delete End If Next…

キーワードでデータを抽出

Dim LastRow As Long Dim r As Integer 'クリア Sheets("まとめ").Range("A5").CurrentRegion.Offset(1, 0).ClearContents 'まとめシートのタイトル行を取得する r = Sheets("まとめ").Range("B5").Row 'まとめシートへデータを書き写す LastRow = Worksheet…

MsgBox 分岐

MsgBoxを使ってその後の処理を分岐させる Dim ans As Integer ans = MsgBox("処理を行いますか?", vbYesNo + vbQuestion, "動作確認") If ans = vbYes Then MsgBox "開始します" Else MsgBox "中断します" End If buttons の引数 定数 値 内容 vbYesNo 4 […

文字列内検索(InStrh)

InStr関数 ~文字列内で検索~ InStr関数 ~文字列内で検索~ 引数に指定した文字列の中で、「検索文字列」が存在する位置を数値で返す。 InStr(文字列,検索文字列) Midと組み合わせて使用することが多い。 Cells(1, 2) = Mid(Cells(1, 1), InStr(Cells(1,…

Copyメソッド

別の場所へコピー コピー元のセル.Copy Destination : = コピー先のセル Range("A1").Copy Destination : = Range("B1") ※Destination は省略可能。→ Range("A1").Copy Range("B1") 貼り付け方法の指定 Range("A1").Copy Range("B1").PasteSpecial Paste := …

複数セルの指定

複数セルの指定 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番目のシートが選択されて終了する。

INDEX MATCH

VLOOKUPと違い、キーの左の列に合っても関係なく表示できる。 =INDEX(マスタ!$A$1:$C$6,MATCH(A2,マスタ!$B:$B,0),1) 【明細シート】 【マスタシート】 INDEX関数 ・マスタシートの$A$1:$C$6,を範囲指定。 ・MATCH関数で指定された行と、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("マ…

VLOOKUP関数

=VLOOKUP(A2,Sheet4!A:C,3,0) = VLOOKUP(検索値,範囲,列番号,検索の型) A2の品番を基に、 Sheet4のA列(品番列)で検索をかける。AからC列の範囲内の数字を表示させる。 A列(品番列)から3列目の数値を表示する。 A2に入力されているのは1。 Sheet4のA列で1は…

目次

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

ショートカットキー 9つ

Ctrl + S (上書き保存) Ctrl + Z (元に戻す) Ctrl + Y (進む) Ctrl + C (コピー) Ctrl + X (切り取り) Ctrl + V (貼り付け) Ctrl + N (新規ファイルの作成) Ctrl + P (印刷) F12 (名前をつけて保存) Ctrl + S (上書き保存) 初めて保存する場合は新規保存。 …

変数の型

変数の型 変数宣言時にデータ型を指定することができる。 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…

印刷不可マクロ

印刷不可マクロ 印刷ボタンを押したときに、マクロを自動実行することで印刷できないようにする。 VBEを開き、ThisiWorkBookを選択する。 BeforePrintを使用し、印刷直後にマクロを自動実行させる。 MsgBoxでユーザーに印刷できないことを知らせる。 Cancel …

行・列の削除

行を削除する 範囲選択 シート指定 列の削除 範囲選択 シート指定 注意点 行を削除する 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で最終行まで差し込みを繰り…

クリア(Clear,Comments,Contents,Fomats)

書式のクリア 'A1セル Range("A1").ClearFomat '範囲指定 Range("A1:B2").ClearFormats 'すべてのセル Cells.CrearFomats '指定したシート WorkSheets("Sheet1").Range("A1").ClearFomats その他のClearメソッド メソッド名 対象 Clear 全て ClearComments …

連続データ

フィルハンドルでドラッグして連続データを作成する。 変数を使わずに、ベタ打ちの数式を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…

主キー

Accessテーブルの主キーとは、レコードを個別に識別する為のもの。 以下の条件を満たしたフィールドがあれば、自動的に主キーに設定される。 ・他のレコードと重複していない。 ・全てのレコードに値が入力されている。 主キーを設定することで、他のテーブ…

参照整合性

リレーションシップ 参照整合性 ☑参照整合性 多側(マスタ)に∞、一側(明細)に1が自動的につく。 結びついているレコードの変更・更新・削除ができなくなり、矛盾を防ぐことができる。 ☑フィールドの連鎖更新 ☑レコードの連鎖削除 結びついているレコード…