MENU

かんたんマニュアル

【特徴】VBAを知らなくても、自動化できる

アプリ表示するVBAコードを、エクセル画面に貼るだけ

(順次/分岐/繰り返し/変数はアプリに組み込み。プログラムコードを意識する必要はありません)

VBAとは、Excelを自動処理するプログラムです。

エクセル画面とはプログラムを書くVBE画面です。

 

ログイン画面

 

【重要】 テストデータで試してから、本番利用をお願いいたします。

       アプリで発生した損害の責任は、一切負いません。

 

メニュー画面

まず、カテゴリーを選びます

つぎに、処理を選びます。

◆印は、Excelの基本機能です。

【ツール】は、複雑なコードを、簡単に作成できます。

 

設定画面

処理を選ぶと、設定画面が開きます。

マクロ名の設定

まず、マクロに名前を付けます。

f:id:The-Alchemist:20210914233051p:plain
※ マクロを実行するときに、この名前を選択します。

対象の設定

つぎに、シート名セル範囲を設定します。

f:id:The-Alchemist:20220111081404p:plain

 

範囲オプション」の「最終行まで」を選ぶと、行数の増減に自動対応します。

 

処理する条件の設定

処理する条件を設定します。

・通常は「条件なし」ですが、処理する条件を選べます。

・条件には、セルの値、エラー、空白、色などがあります。

f:id:The-Alchemist:20210208124154p:plain
f:id:The-Alchemist:20210208123950p:plain


メイン処理の決定

表示」ボタンを押すとVBAコードが表示されます。

f:id:The-Alchemist:20210208131341p:plain
【重要】セル・行・列の指定は、半角でお願いいたします(全角不可)。

 

コード表示画面

f:id:The-Alchemist:20210628060301p:plain

処理を1つだけ行うとき

上図 [コードをコピーする]でコピーし、VBE画面に貼り付けて、Excel画面でマクロを実行します。

※「連続トリガー」は使いません。

VBE画面の使い方

マクロの実行のしかた

【重要】通常の拡張子.xlsxでは、VBAコードを実行できません。

拡張子を.xlsmに変更して保存し、再び開いて、コードを貼り付けます。

保存の手順は[ファイル]⇒[名前を付けて保存]⇒[Excelマクロ有効ブック(*xlsm)] ⇒[保存

複数の処理を連続して行うとき

 [コードをコピーする]でコピーし、VBE画面に貼り付けて、Excel画面でマクロを実行します。

 [次のコードを作成]でメニューに戻り、マクロ名は変えずに次のコードを作成します。

 ①~②を繰り返します。

  最後に[連続トリガーをコピー]でコピーし、VBE画面の下方に貼り付けます。エクセル画面で「連続トリガー」を実行すると、枝番_1から順にすべての枝番が実行されます。

※表は、上下左右を空白にしてください。アプリが表全体を選ぶとき、誤った範囲になります。

なお、表のタイトルは、テキストを入れた透明の図形を挿入します。

(挿入⇒図⇒図形⇒▬⇒テキストの編集、図形の書式設定(塗りつぶし無し、線なし)

まとめ

・アプリは、VBAを知らなくても、自動化できます!

 

↓↓↓↓↓↓↓使用例一覧で、詳細をご確認ください↓↓↓↓↓↓↓

アプリはこちらから↓↓↓↓ 

パスワード等を登録する理由

他のユーザーと、データが混じらないようにするためです。

ログアウトするまでパスワードを記憶する

☑を入れると、パスワード入力をせずに、すぐにTOP画面が開きます。

事前テストのお願い

アプリで発生した損害の責任は一切負いません。よって、コピーしたファイルでテストをお願いいたします。

 

使用例一覧

▼併用すると便利な機能

▼カーソル

▼セル(挿入、削除、結合)

▼セル(入力・クリア )

▼ 書式 (色)

▼ 書式  (罫線)

▼コピー

▼ 文字列、CSVデータ

▼並び替え

▼フィルター(表の検索)

▼検索・置換・2表比較

▼ 表の形式変換

▼ 合計表示

▼表の上書き更新・新規追加

▼連続データ・重複データ・連番

▼ 行・列

▼ ブック・フォルダ

重複するデータ(複数列)を削除して、残ったデータを表示する

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、「重複するデータ(複数列)を削除して、残ったデータを表示する」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

会社名が重複していますが、B社のデータが1か所、違います。

重複しているデータを取り除くと、6行のデータが残りました。

できました(^^)/

なお、下の図の作業列に、数式"=A2&B&C2&D2"で、

セルの値を一つにつなぎ、行全体の重複を調べます

作業列は、処理後に削除されます。

アプリの設定

アプリのトップページ 

 ⇒▼連続データ、重複データ、連番

 ⇒◇重複データを削除(Dictionary)

【ポイント】

 作業列の最終行を決める列は、関数を入れる最終行を決めるために、現在あるデータ上端セルを指定します。

 結果の表示先で、別の場所を指定するときは、現在ある表から2列以上離したセルにしてください。(前回作成したデータ範囲を、CurrentRegionで削除するため)

 

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

Sub デモ_57() '重複するデータを削除する
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
'◆作業列に関数を入れる
Dim 作業列末尾行 As Long, 作業列下セル As String
Sheets("Sheet1").Select
Range(Range("e2"), Cells(Rows.Count, Range("e2").Column).End(xlUp)).Clear
作業列末尾行 = Cells(Rows.Count, Range("d2").Column).End(xlUp).Row
作業列下セル = Cells(作業列末尾行, Range("e2").Column).Address(False, False)
Range(Range("e2"), Range(作業列下セル)).Formula = "=a2&b2&c2&d2"
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("Sheet1").Select
'◆最終行を取得し、セル範囲を決める
With Range("e2:e2").CurrentRegion
      右下セル = Cells(.Row + .Rows.Count - 1, Range("e2").Column).Address(False, False)
End With
セル範囲 = "e2" & ":" & 右下セル 
Call デモ_57_メイン処理(セル範囲, 右下セル)
'◆作業列の関数をクリア
Range(Sheets("Sheet1").Range("e2"), Sheets("Sheet1").Range(作業列下セル)).Clear
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub
                           
Sub デモ_57_メイン処理(セル範囲 As String, 右下セル As String)
Application.Calculation = xlCalculationManual '自動計算を停止
Dim 辞書 As Object, 行 As Long, 列 As Long
Set 辞書 = CreateObject("Scripting.Dictionary")
Worksheets("Sheet1").Select
For 行 = Range("e2").Row To Range(右下セル).Row
    If Not 辞書.Exists(Cells(行, Range("e2").Column).Value) Then
        辞書.Add Cells(行, Range("e2").Column).Value, Cells(行, 1).Resize(1, 4).Value
    End If
Next 行
Dim データ As Variant
Worksheets("Sheet1").Select
Range("g1").CurrentRegion.Clear
行 = Range("g1").Row
For Each データ In 辞書.items
    Cells(行, Range("g1").Column).Resize(1, 4).Value = データ
    行 = 行 + 1
Next
Set 辞書 = Nothing
'見出しを転記する
Sheets("Sheet1").Select
Cells(Range("e2").Row, 1).Offset(-1, 0).Resize(1, 4).Copy
Sheets("Sheet1").Select
Range("g1").Resize(1, 4).Insert Shift:=xlDown
Application.Calculation = xlCalculationAutomatic ' 自動計算を再開
End Sub

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓ 

特定の文字がある行全体に、色を付ける

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、「特定の文字がある行全体に、色を付ける」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

赤点と表示されている行に、色を付けます。

できました(^^)/

なお、下の図の作業列で、「赤点」と入力されているセルの数を調べ=COUNTIF(B2:D2,"赤点")、その数がゼロ以外の行に色を付けます。

作業列は、処理後に削除されます。

アプリの設定

アプリのトップページ 

 ⇒▼書式

 ⇒◇文字の色・セルの色

【ポイント】

 作業列の最終行を決める列は、作業列に関数を入れる最終行を決めるために、見出し列の上端セルを指定します。

 処理する範囲は、作成した作業列を指定します。そして、色を付ける範囲は、▼ セル位置・範囲の変更Offsetで左に移動し、Resizeで範囲を広げます。

 

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

Sub デモ_60() '色変更
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
'◆作業列に関数を入れる
Dim 作業列末尾行 As Long, 作業列下セル As String
Sheets("Sheet1").Select
Range(Range("e2"), Cells(Rows.Count, Range("e2").Column).End(xlUp)).Clear
作業列末尾行 = Cells(Rows.Count, Range("a2").Column).End(xlUp).Row
作業列下セル = Cells(作業列末尾行, Range("e2").Column).Address(False, False)
Range(Range("e2"), Range(作業列下セル)).Formula = "=COUNTIF(B2:D2,""赤点"")"
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("Sheet1").Select
'◆最終行を取得し、セル範囲を決める
With Range("e2:e2").CurrentRegion
      右下セル = Cells(.Row + .Rows.Count - 1, Range("e2").Column).Address(False, False)
End With
セル範囲 = "e2" & ":" & 右下セル 
Range(セル範囲).Offset(0, -4).Resize(, 4).Interior.Color = xlNone
'◆条件分岐
    For Each セル In Range(セル範囲).Cells
      If セル.Value <> 0 Then
   セル.Select

       Call デモ_60_メイン処理(セル範囲, セル)
      End If
    Next
'◆作業列の関数をクリア
Range(Sheets("Sheet1").Range("e2"), Sheets("Sheet1").Range(作業列下セル)).Clear
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub
 
Sub デモ_60_メイン処理(セル範囲 As String, セル As Range)
Selection.Offset(0, -4).Resize(, 4).Interior.Color = RGB(255, 255, 0)
End Sub

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓ 

2つのデータを比較し、無いデータに、色を付ける

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、「2つのデータを比較し、”ない”データに、色を付ける」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

左のデータに無い、右のデータのセルを、黄色にします。

できました(^^)/

アプリの設定

アプリのトップページ 

 ⇒▼検索・置換・2表比較 

 ⇒2つの異なるデータを比較し、ない(ある)データに、色を付ける

 1列だけでなく、複数列に対応します。

 



表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

Sub デモ_37() '2つの異なるデータを比較し、ない(ある)データに、色を付ける
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
'◆◆右下セルの取得
Dim 元右下セル As String, 先右下セル As String
Sheets("Sheet1").Select
'◆最終行を取得し、セル範囲を決める
Range("a4:a4").CurrentRegion.Select
元右下セル = Cells(Selection.Row + Selection.Rows.Count - 1, Range("a4").Column).Address(False, False)
Sheets("sheet1").Select
'◆最終行を取得し、セル範囲を決める
Range("d1:d1").CurrentRegion.Select
先右下セル = Cells(Selection.Row + Selection.Rows.Count - 1, Range("d1").Column).Address(False, False)
'◆◆リスト表から辞書作成
Dim 元シート As Worksheet, 元辞書 As Object, 元key As Variant, 元item As Variant, 元行 As Long
Dim 元左上行 As Long, 元左端列 As Long, 元右端列   As Long, 元右下行 As Long
Set 元辞書 = CreateObject("Scripting.Dictionary")
'初期化
元辞書.RemoveAll
'◆初期値の設定
Set 元シート = Sheets("Sheet1")
元左上行 = 元シート.Range("a4").Row
元左端列 = 元シート.Range("a4").Column
元右下行 = 元シート.Range(元右下セル).Row
元右端列 = 元シート.Range(元右下セル).Column
'◆元表を配列に格納
Dim 元表データ As Variant, 元の列数 As Long, データ1列 As Variant
元表データ = 元シート.Range(Cells(元左上行, 元左端列), Cells(元右下行, 元右端列))
'◆配列を1列づつ、1次元配列へ格納
For 元の列数 = 1 To 元右端列 - 元左端列 + 1
    If 元右端列 = 元左端列 Then
        データ1列 = 元表データ
    Else
        データ1列 = WorksheetFunction.Index(WorksheetFunction.Transpose(元表データ), 元の列数)
    End If
    '元辞書作成
    For Each 元key In データ1列
        If Not 元辞書.Exists(元key) Then
            元辞書.Add 元key, ""
        End If
    Next 元key
Next 元の列数
'◆◆色を付ける処理
Dim 先シート As Worksheet, 先左上行 As Long, 先左端列 As Long, 先右端列  As Long, 先右下行 As Long
Dim 対象列 As Long, 対象行  As Long, 対象key As Variant
'◆初期値の設定
Set 先シート = Sheets("sheet1")
先左上行 = 先シート.Range("d1").Row
先左端列 = 先シート.Range("d1").Column
先右下行 = 先シート.Range(先右下セル).Row
先右端列 = 先シート.Range(先右下セル).Column
先シート.Range(Range("d1") & ":" & Range(先右下セル)).Interior.ColorIndex = xlNone
For 対象列 = 先左端列 To 先右端列
    For 対象行 = 先左上行 To 先右下行
        対象key = 先シート.Cells(対象行, 対象列).Value
        If Not 元辞書.Exists(対象key) Then
            Cells(対象行, 対象列).Interior.Color = RGB(255, 255, 0)
        End If
    Next 対象行
Next 対象列
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓ 

xlookUp関数のように、マスターと一致したら、複数列を転記する(Dictionary)

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、「マスターと一致したら、マスターの複数列を転記する」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

会員番号が一致する、マスターの氏名と、都道府県の2列を転記します。 

Vlookup関数で、複数列を表示するイメージです。

マクロを実行すると、2列のデータが転記されました。

できました(^^)/

アプリの設定

アプリの設定です。

アプリのトップページ 

⇒▼検索・置換・2表比較 

⇒【ツール】xlookUp関数のように、検索して複数列のデータを転記する

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

Sub デモ_26() '検索して複数列のデータを転記する
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Application.Calculation = xlCalculationManual '自動計算を停止
Dim マスタ辞書 As Object, マスタkey As Variant, マスタitem As Variant
Dim マスタシート As Worksheet, データシート As Worksheet
Dim マスタ行 As Long, データ行 As Long
Set マスタ辞書 = CreateObject("Scripting.Dictionary")
Set マスタシート = Sheets("sheet1") 'マスタのシート
Set データシート = Sheets("Sheet1") 'データのシート
'初期化
マスタ辞書.RemoveAll
'マスタ辞書作成
With マスタシート
    For マスタ行 = .Range("e3").Row To Cells(Rows.Count, .Range("e3").Column).End(xlUp).Row
        マスタkey = .Cells(マスタ行, .Range("e3").Column).Value
        マスタitem = Array(マスタ行, Range(.Cells(マスタ行, Range("e3").Column + 1), .Cells(マスタ行, Range("e3").Column + 1 + 2 - 1)).Value)
        マスタ辞書.Add マスタkey, マスタitem
    Next マスタ行
End With
'マスタ辞書を転記
With データシート
    For データ行 = .Range("a3").Row To Cells(Rows.Count, .Range("a3").Column).End(xlUp).Row
        マスタkey = .Cells(データ行, .Range("a3").Column).Value
        If マスタ辞書.Exists(マスタkey) Then
         .Cells(データ行, .Range("a3").Column).Offset(0, 1).Resize(1, 2) = マスタ辞書.Item(マスタkey)(1)
        End If
    Next データ行
End With
マスタ辞書.RemoveAll
Application.Calculation = xlCalculationAutomatic ' 自動計算を再開
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓ 

データの変わり目に、罫線を引く

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、「データの変わり目に、罫線を引く」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

A列の商品コードの頭の一文字が変わる行に、罫線を引きます。

データの変わり目に、罫線を引けました。

できました(^^)/

アプリの設定

アプリのトップページ 

⇒▼書式 

⇒◇罫線

【ポイント】

 「処理する範囲」は、条件分岐を判定するA列のみにします。そして、「セル位置・範囲の変更」で、罫線を引く範囲を5つ右にResize(広げ)ます。

 「処理する範囲」は、データの2行目の、A3セルにし、「最終行まで」を選択します。

 「処理する条件」は、「その上のセルと値が違う」を選びます。

■ 「セルの範囲変更」で、「,5」と入力します。カンマの左側は行数ですが、変更しないときは、数字を入れません。

■ 「上の罫線」で、種類を選びます。

 

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

Sub デモ_31() '罫線
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("Sheet1").Select
'◆最終行を取得し、セル範囲を決める
Range("a3:a3").CurrentRegion.Select
右下セル = Cells(Selection.Row + Selection.Rows.Count - 1, Range("a3").Column).Address(False, False)
セル範囲 = "a3" & ":" & 右下セル

'◆条件分岐
For Each セル In Range(セル範囲).Cells
 On Error Resume Next
If セル.Value <> セル.Offset(-1, 0).Value Then
   セル.Select

   Call デモ_31_メイン処理(セル範囲)
  End If
Next
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub

Sub デモ_31_メイン処理(セル範囲 As String)
With Selection.Offset(0, 0).Resize(, 5).Borders(xlEdgeTop)
 .LineStyle = xlContinuous
 .Weight = xlThick
End With
Selection.Offset(0, 0).Resize(, 5).Borders(xlEdgeTop).Color = RGB(255, 0, 0)
End Sub

 

アプリはこちらから↓↓↓↓

 

ブックを閉じたとき、全シートのカーソルをA1セルに戻す

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、「入力欄のデータを、リストの末尾に転記し、入力欄を空欄に戻す」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

ブックを閉じたとき、自動でカーソルをA1にもどします。

ブックを閉じて、再びブックを開けると、カーソルがA1にあります。

できました(^^)/

 

アプリの設定

アプリの設定です。

アプリのトップページ 

⇒▼ カーソル 

⇒【ツール】全シートのカーソルをA1セルに戻す

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

 
Sub デモ_1() '全シートA1セル
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止 
Dim  シート As Worksheet
For Each シート In Worksheets
    シート.Activate
    シート.Range("A1").Select
Next
Worksheets(1).Activate  
Application.DisplayAlerts = true   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End sub      


Private Sub Auto_Close()
Call デモ_1
End Sub
   

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓ 

 

入力欄のデータを、リストの末尾に転記し、入力欄を空欄に戻す

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、「入力欄のデータを、リストの末尾に転記し、入力欄を空欄に戻す」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

入力欄のデータを、リストに転記します。

※ 入力は、Tabキーで右に移動し、エンターキーで左下に移動します。

リストに転記され、カーソルが入力欄の左端に戻り、値がクリアされました。

できました(^^)/

 

アプリの設定

アプリの設定です。

アプリのトップページ 

⇒▼コピー・貼り付け 

⇒◇コピー・切り取り・貼り付け

【ポイント】

 「貼り付け先のセル」は、上のセルの最終行の下に貼り付けを選びます。

 「コピー後に、コピー元セルをクリアし、カーソルを戻す」にチェック。

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

 Sub デモ_29() 'コピー・切り取り
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("Sheet1").Select
セル範囲 = "a2:d2"

Range(セル範囲).Select
Call デモ_29_メイン処理(セル範囲)
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub

 

Sub デモ_29_メイン処理(セル範囲 As String)
Selection.Offset(0, 0).Copy

Sheets("Sheet1").Select
Range("f2").Select
Dim 左端列 As Long, 下端行 As Long, 相手セル As String, 回 As Long
For 回 = 1 To 1
   左端列 = ActiveCell.Column
   下端行 = Selection.CurrentRegion.Row + Selection.CurrentRegion.Rows.Count - 1
   相手セル = Cells(下端行, 左端列).Address(False, False)
   If Range(相手セル).Value <> "" Then
     相手セル = Cells(下端行 + 1, 左端列).Address(False, False)
   End If
   Range(相手セル).Select
   Selection.PasteSpecial Paste:=xlPasteAll, Transpose:=False
Next 回

Application.CutCopyMode = False

'データをクリアし、カーソルを戻す

Sheets("Sheet1").Select
Range(セル範囲).ClearContents
Range("a2").Select
End Sub

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓ 

条件に合うセルの文字列に、文字を付け加える

無料アプリで、すぐに、エクセルVBAマクロを作成できます。

例として、「条件に合うセルの文字列に、文字を付け加える」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

色が黄色のセルの日付の前に、”休 ”の文字を付け加えます。

できました(^^)/

 

アプリの設定

アプリの設定です。

アプリのトップページ 

⇒◇数式・Excel関数の入力 

⇒◇文字の入力

【ポイント】

 例では、色を条件にしましたが、通常の条件も使えます。

 ある列の値を条件にして、ほかのセルの文字を変える場合は、セル位置・範囲の変更でOffsetやResizeを使い、文字を変えるセルを指定します。



 

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

Sub デモ_24() '文字入力
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("Sheet1").Select
'◆最終行を取得し、セル範囲を決める
Range("a4:g4").CurrentRegion.Select
右下セル = Cells(Selection.Row + Selection.Rows.Count - 1, Range("g4").Column).Address(False, False)
セル範囲 = "a4" & ":" & 右下セル 
'◆条件分岐
For Each セル In Range(セル範囲).Cells
  If セル.Interior.Color = RGB(255, 255, 0) Then
   セル.Select

   Call デモ_24_メイン処理(セル範囲, セル)
  End If
Next
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub
 
Sub デモ_24_メイン処理(セル範囲 As String, セル As Range)
Selection.Offset(0, 0).Formula = "休 " & セル.Offset(0, 0).Value

End Sub

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓ 

空白のセルに、上と同じ文字を、白文字で入れる

無料アプリで、すぐに、エクセルVBAマクロを作成できます。

例として、「空白のセルに、上と同じ文字を、白文字で入れる」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

空白セルがある列を基準に、フィルターをかけます。

そのため、空白のセルに、空白の文字を入れます。

空白に見えるA9とA10セルは、上のセルの値をコピーし、白文字にしたので、

フィルターの対象になります。

できました(^^)/

 

アプリの設定

アプリの設定です。

アプリのトップページ 

⇒◇数式・Excel関数の入力 

⇒◇文字の入力

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

Sub デモ_28() '空白は上の値をコピー
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("Sheet1").Select
'◆最終行を取得し、セル範囲を決める
Range("a1:e1").CurrentRegion.Select
右下セル = Cells(Selection.Row + Selection.Rows.Count - 1, Range("e1").Column).Address(False, False)
セル範囲 = "a1" & ":" & 右下セル 
Range(セル範囲).Select
Call デモ_28_メイン処理(セル範囲)
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub
 
Sub デモ_28_メイン処理(セル範囲 As String)
Dim 空白 As Range, 値 As Range
On Error Resume Next
Set 空白 = Range(セル範囲).SpecialCells(xlCellTypeBlanks)
空白.FormulaR1C1 = "=R[-1]C"
'◆白文字にする
空白.Font.Color = RGB(255, 255, 255)
'値貼り付け
For Each 値 In 空白
    値.Value = 値.Value
Next
End Sub   

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓ 

最終行まで関数を入力する

無料アプリで、すぐに、エクセルVBAマクロを作成できます。

例として、「最終行まで関数を入力する」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

E列の最終行まで、IF(B2="いちご",C2*D2,"")をいれ、”いちご”の行に金額を表示します。

マクロを実行すると、”いちご”の行に、金額が表示されました。

関数は、最終行まで入力されています。

できました(^^)/

 

アプリの設定

アプリの設定です。

アプリのトップページ 

⇒◇数式・Excel関数の入力 

⇒◇数式・関数の入力

【ポイント】

■ 数式をいれる列は、空白のため、最終行が不明です。そこで、「処理する範囲」は、データがある列を選びます。数式は、そこから右に移動(OFFSET)したセルに入力します。

(例ではデータのあるA列を指定し、右に4つ移動(OFFSET)したセルに、関数を入力しています)

 範囲オプションは、「最終セルまで」を選びます。

 入力する数式は、「左上セル」と同じ行のアドレスを使います。

(例えば、「左上セル」がA2ならば、関数には、B2,C2,D2を使います。もし、数式にB3,C3,D3をつかうと、A2の関数にB3,C3,D3が入力され、結果がズレます)

 入力する数式は、=で始め、全体を”で囲みます。

 数式内の文字列も”で囲み、””文字列””となります。

 例では、"=IF(B2=""いちご"",C2*D2,"""")"となります。

 

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

Sub デモ_2() '数式入力
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("sheet1").Select
'◆最終行を取得し、セル範囲を決める
Range("a2:a2").CurrentRegion.Select
右下セル = Cells(Selection.Row + Selection.Rows.Count - 1, Range("a2").Column).Address(False, False)
セル範囲 = "a2" & ":" & 右下セル

 Range(セル範囲).Select
Call デモ_2_メイン処理(セル範囲, セル)
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub
 
Sub デモ_2_メイン処理(セル範囲 As String, セル As Range)
Selection.Offset(0, 4).Formula = "=IF(B2=""いちご"",C2*D2,"""")"
End Sub

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓ 

フィルター結果に、色を付ける

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、「フィルター結果に、色を付ける」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

処理のイメージ

事例

H2セルの値「A社」でフィルターします。

A社の行に色が付きました。

できました(^^♪

アプリの設定

アプリの設定です。

アプリのトップページ 

⇒▼フィルター・並べ替え 

⇒◇フィルター条件が1つ

【ポイント】

 行数が変わるデータの、最終行まで処理できます。

 フィルター条件は、VBAコード組み込みや、セルの値での設定ができます。

 アスタリスク(*)を使った、あいまい検索ができます。

 フィルター結果に、を付けられます。

 フィルター結果を削除したり、コピーができます。

 フィルター結果を貼り付けるの、指定ができます。

 既存データの下に、貼り付けができます。

 

 

作成されるコード

Sub デモ_23() 'フィルター条件1つ
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("納品データ").Select
'◆最終行を取得し、セル範囲を決める
Range("a1:f1").CurrentRegion.Select
右下セル = Cells(Selection.Row + Selection.Rows.Count - 1, Range("f1").Column).Address(False, False)
セル範囲 = "a1" & ":" & 右下セル

 Range(セル範囲).Select
Call デモ_23_メイン処理(セル範囲)
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub
 
Sub デモ_23_メイン処理(セル範囲 As String)
Application.Calculation = xlCalculationManual '自動計算を停止
'範囲の色をクリアする
Range(セル範囲).Offset(1, 0).Resize(Selection.Rows.Count - 1).Interior.ColorIndex = 0
Dim 対象セル As Range, 条件値 As String
Set 対象セル = Range("h2")
条件値 = "=" & Format(対象セル, 対象セル.NumberFormatLocal)
'フィルタ
Range(セル範囲).AutoFilter Field:=1, Criteria1:=条件値
'フィルター結果に色を付ける
    Range(セル範囲).Offset(1, 0).Resize(Selection.Rows.Count - 1).Interior.Color = RGB(255, 255, 0) 
Sheets("納品データ").AutoFilterMode = False   
Application.Calculation = xlCalculationAutomatic ' 自動計算を再開
End Sub

 

アプリはこちらから↓↓↓↓ 

縦のリスト形式のデータを、(定型シートに)内容別にコピー

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、「納品データを、請求書フォーマットに、取引先別に貼り付ける」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

左の「納品データ」を、納品先別に、右の「請求書」に貼り付けます。

できました(^^♪

アプリの設定

アプリの設定です。

アプリのトップページ 

⇒▼コピー・貼り付け 

⇒【ツール】縦のリスト形式のデータを、(定型シートに)内容別にコピー

 

【ポイント】

■ 行数が変わるデータの、最終行まで処理できます。

■ 転記する列で、「指定した列を転記する」を選び、「B:F」と指定すると、

A列(納品先名)を除いた、B列からF列をコピーします。

 

 

Set 重なり = Intersect(Range(セル範囲).Offset(1, 0).Resize(Selection.Rows.Count - 1), Range("b:f"))

 

 

 

 

作成されるコード

Sub デモ_76() '項目ごとに定型シート作成
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim セル範囲 As String, セル As Range, 右下セル As String
Sheets("納品データ").Select
'◆最終行を取得し、セル範囲を決める
Range("a1:f1").CurrentRegion.Select
右下セル = Cells(Selection.Row + Selection.Rows.Count - 1, Range("f1").Column).Address(False, False)
セル範囲 = "a1" & ":" & 右下セル

Range(セル範囲).Select
Call デモ_76_メイン処理(セル範囲)
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub

 

Sub デモ_76_メイン処理(セル範囲 As String)
Application.Calculation = xlCalculationManual '自動計算を停止
'◆キーをつくる
Dim 辞書 As Object, キー As Variant, 最終行 As Long, 行 As Long
Set 辞書 = CreateObject("Scripting.Dictionary")
最終行 = Sheets("納品データ").Cells(Rows.Count, Range("a1").Column).End(xlUp).Row
For 行 = Range("a1").Row + 1 To 最終行
    キー = Sheets("納品データ").Cells(行, Range("a1").Column + 1 - 1).Value
    If Not 辞書.Exists(キー) Then
      辞書.Add キー, ""
    End If
Next
'◆キーごとにデータを貼り付ける
For Each キー In 辞書
    '◆フィルタ
    Sheets("納品データ").Select
    Range(セル範囲).AutoFilter Field:=1, Criteria1:=キー
     '◆コピーする列の確定
Dim 重なり As Range
Set 重なり = Range(セル範囲).Offset(1, 0).Resize(Selection.Rows.Count - 1)
    '◆シート名があるかチェック
    Dim シート As Worksheet
    For Each シート In Worksheets
        If シート.Name = キー Then
            '◆コピー
            重なり.Copy
            Sheets("納品データ").AutoFilterMode = False
            Sheets(キー).Select
            Range("b8").Select
            '◆貼り付け行
            Dim 左端列 As Long, 下端行 As Long, 相手セル As String
            左端列 = ActiveCell.Column
            下端行 = Selection.CurrentRegion.Row + Selection.CurrentRegion.Rows.Count - 1
            相手セル = Cells(下端行, 左端列).Address(False, False)
            If Range(相手セル).Value <> "" Then
               相手セル = Cells(下端行 + 1, 左端列).Address(False, False)
            End If
            '◆貼り付け
            Range(相手セル).PasteSpecial Paste:=xlPasteValues
            GoTo 次の項目
        End If
    Next シート
    Worksheets("原本").Copy after:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = キー
    '◆コピー
    重なり.Copy
    Sheets("納品データ").AutoFilterMode = False
    '◆貼り付け
    Sheets(キー).Range("b8").PasteSpecial Paste:=xlPasteValues
次の項目:
Next キー
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic ' 自動計算を再開
End Sub   

 

アプリはこちらから↓↓↓↓ 

2つのセル範囲の値を、入れ替える

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、「2つのセル範囲の値を、入れ替える」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

エクセル画面で、Ctrlキーを使い、2つのセル範囲を選択します。 

VBAマクロを実行すると、2つのセル範囲の値が、入れ替わりました。



できました(^^♪

アプリの設定

アプリの設定です。

アプリのトップページ 

⇒▼検索・置換・2表比較 

⇒【ツール】2つのセル範囲の値を、入れ替える

ポイント】

 「ショートカットキーによるマクロの実行」が便利です。

 

 

 

 

作成されるコード

Sub デモ_18() '2つのセル範囲の値を、入れ替える
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Dim 仮置き1 As Variant, 仮置き2 As Variant, セル範囲1 As Range, セル範囲2 As Range
If Selection.Areas.Count <> 2 Then
    MsgBox "2つのセル範囲を、選択してください"
    Exit Sub
End If
Set セル範囲1 = Selection.Areas(1)
Set セル範囲2 = Selection.Areas(2)
If セル範囲1.Count <> セル範囲2.Count Then
    MsgBox "2つの範囲の、セルの個数が違います"
    Exit Sub
End If
仮置き1 = セル範囲1
仮置き2 = セル範囲2
セル範囲1 = 仮置き2
セル範囲2 = 仮置き1
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub

 

アプリはこちらから↓↓↓↓