Skip to content

Excel

まとめ記事

アドイン

使い方の知識

articles

キーボードショートカット

キー 内容
Ctrl + D 単セル選択中で上のセルをコピー、複セル選択中で選択開始セル(未反転セル)を下にコピー。※Down, Duplicate
Ctrl + R 単セル選択中で左のセルをコピー、複セル選択中で選択開始セル(未反転セル)を複製。※Right, Replicate
Ctrl + G または F5 ジャンプ→ Alt + S:セルの選択 → K:空白セル選択 → F → (下→Spase)×3 → Enter:エラーセル選択
F4 直前の操作の繰り返し。塗りつぶしや行削除の目視&実行に有効。
F12 名前を付けて保存

読み取り専用を推奨する

  1. 名前を付けて保存
  2. ツール(L)
  3. 全般オプション(G)...
  4. 読み取り専用を推奨する(R)

CSV取り込み

  1. データタブ
  2. テキストファイル

UTF-8

[最後のセル(Ctrl+End)]の位置を修正する

  1. Ctrl+End
  2. 余分な行と列を全体選択して削除
  3. 保存 ←重要

ワイルドカードの使い方

フィルタされたセルのみ選択

環境

Excelファイル右クリックメニューの「印刷(P)」を消す

これを Excel2007_RightClickMenu_PrintOFF.reg というファイル名で保存して実行。Excel2007 = Excel12。

メモ

条件付き書式

テーブル定義向け

1つ上のセルと同じ → 文字色をグレーに
適用先: $A:$C
=INDIRECT(ADDRESS(ROW(),COLUMN()))=INDIRECT(ADDRESS(ROW()-1,COLUMN()))

その行の2列目が、1つ上の行の2列目と違う → セルの上に罫線
適用先: $B:$I
=INDIRECT(ADDRESS(ROW(),2))<>INDIRECT(ADDRESS(ROW()-1,2))

その行の1列目が、1つ上の行の1列目と違う → セルの上に罫線
適用先: $A:$A
=INDIRECT(ADDRESS(ROW(),1))<>INDIRECT(ADDRESS(ROW()-1,1))

数式

値の表示形式指定

=TEXT(A1,"@")
=TEXT(A1,"yyyy/mm/dd")
=TEXT(A1,"0")

オフセット参照

=SUM(A1:A10)
=SUM(A1:OFFSET(A11,-1,0))  ※基準セルから上に1、右に0

OFFSET(基準, 行数, 列数, [[](高さ],))

アドレス文字列をもとに値を取得

=INDIRECT("A1")            ※A1セルの値
=INDIRECT("Sheet1!A1")         ※Sheet1のA1セルの値
=INDIRECT("A"&ROW())          ※自行のA列値
=INDIRECT(ADDRESS(1,1))        ※A1セルの値
=INDIRECT(ADDRESS(ROW(),COLUMN()))   ※自セル値
=INDIRECT(ADDRESS(ROW()-1,COLUMN()))  ※上セル値
=INDIRECT(ADDRESS(ROW(),COLUMN()-1))  ※左セル値

列の英字を取得

列が英字(A1形式)のときの英字を返す。 R1C1形式でも結果は同じ(ADDRESSの第4引数で明示的に指定している)。

=LEFT(ADDRESS(ROW(),COLUMN(),4),LEN(ADDRESS(ROW(),COLUMN(),4,TRUE))-LEN(ROW()))

改行チェック

改行が見つかったら改行文字が何番目かの数値が返る。改行がない場合は #VALUE! エラー。

=SEARCH(CHAR(10),A1)

改行を削除した文字列を取得

=CLEAN(A1)           ※印刷できない文字を文字列から削除 http://office.microsoft.com/ja-jp/excel-help/HP005209014.aspx
=SUBSTITUTE(A1,CHAR(10),"")  ※改行コードのみ除去

ハイパーリンク

=HYPERLINK(CONCATENATE("[ファイル名.xls]","シート名","!A1"),"リンク")

現在のExcelファイル名をセルに挿入する

=MID(CELL("filename"),SEARCH("[SEARCH("](",CELL("filename"))+1,)",CELL("filename"))-SEARCH("[",CELL("filename"))-1)

色のついたセルをカウント・集計

マクロ

シート名の一覧を作成

Sub シート名の一覧を作成()

  Dim objSheet As Object
  Dim intLoop As Integer

  intLoop = ActiveCell.Row
  startRow = ActiveCell.Row

  For Each objSheet In ActiveWorkbook.Sheets
    ActiveWorkbook.ActiveSheet.Cells(intLoop, ActiveCell.Column).Value = objSheet.Name
    If objSheet.Name <> WorksheetFunction.Clean(objSheet.Name) Then
        MsgBox ("印刷できない文字が含まれています。" & vbNewLine & vbNewLine & intLoop - startRow + 1 & ". " & objSheet.Name)
    End If
    intLoop = intLoop + 1
  Next

End Sub
Sub シート名の一覧リンクを作成()

  Dim objSheet As Object
  Dim intLoop As Integer
  Dim fx As String

  intLoop = ActiveCell.Row
  startRow = ActiveCell.Row

  For Each objSheet In ActiveWorkbook.Sheets
    fx = "=HYPERLINK(CONCATENATE(""[& ActiveWorkbook.Name & "](")"",""'" & objSheet.Name & "'"",""!A1""),""" & objSheet.Name & """)"
    ActiveWorkbook.ActiveSheet.Cells(intLoop, ActiveCell.Column).Formula = fx
    If objSheet.Name <> WorksheetFunction.Clean(objSheet.Name) Then
        MsgBox ("印刷できない文字が含まれています。" & vbNewLine & vbNewLine & intLoop - startRow + 1 & ". " & objSheet.Name)
    End If
    intLoop = intLoop + 1
  Next

End Sub

選択シートのズームリセット

Sub 選択シートのズームリセット()
    Dim ws As Worksheet
    Dim i As Integer
    ActiveWindow.Zoom = 100
    i = 0
    For Each ws In ActiveWindow.SelectedSheets
        i = i + 1
        ws.Activate
        ws.Range("A1").Select
    Next
End Sub

参照元トレース表示

Sub 参照元トレース表示()
  Dim ActCell As Range
  Dim ActObj As Range
  Dim ActADR As String
  Set ActCell = Selection.SpecialCells(xlCellTypeFormulas, 23)

  For Each ActObj In ActCell
    On Error GoTo ER
    ActADR = ActObj.Address
    Range(ActADR).Activate
    ActiveCell.ShowPrecedents
  Next

  ER:
    Range("A1").Select
End Sub

セルコメント操作

セル選択をしないとシート全体が対象になる

Sub 選択セルのコメント表示()
  'http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_comment.html
  Dim c As Range
  For Each c In Selection.SpecialCells(xlCellTypeComments)
    If c.Comment Is Nothing Then
    Else
      c.Comment.Visible = True
    End If
  Next
End Sub

Sub 選択セルのコメントをリサイズ()
  Dim c As Range
  For Each c In Selection.SpecialCells(xlCellTypeComments)
    If c.Comment Is Nothing Then
    Else
      c.Comment.Shape.TextFrame.AutoSize = True
    End If
  Next
End Sub

Sub 選択セルのコメント非表示()
  Dim c As Range
  For Each c In Selection.SpecialCells(xlCellTypeComments)
    If c.Comment Is Nothing Then
    Else
      c.Comment.Visible = False
    End If
  Next
End Sub

Sub 選択セルのコメント情報()
  Dim c As Range
  For Each c In Selection.SpecialCells(xlCellTypeComments)
    If c.Comment Is Nothing Then
    Else
      'イミディエイト ウィンドウ  Ctrl+G
      Debug.Print "[Address] " & c.Address
      Debug.Print "[](Author) " & c.Comment.Author
      Debug.Print "[](Parent) " & c.Comment.Parent
      Debug.Print "[  ](Text) " & c.Comment.Text
      Debug.Print "-----------------"

    End If
  Next
End Sub