Excel

//******* 操作 *************************************************
■数式を値に変換
F2を押してからF9
■CurrentRegion選択
Ctrl + Shift + *
■改行に置き換え
CTRL + J
//******* 関数 *************************************************
■抽出
IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX*1,"")
■50以上100未満のセルの数
COUNTIF(C4:C10,"<100")-COUNTIF(C4:C10,"<50")
■シート名
=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))
■行番号
=IF(ISNUMBER(INDIRECT(ADDRESS(ROW()-1,COLUMN()))),INDIRECT(ADDRESS(ROW()-1,COLUMN()))+1,1)
■自分の上のセルの値
INDIRECT(ADDRESS(ROW()-1,COLUMN()))
■文字列の置き換え
Replace(文, "対象", "置換後")
■数値を文字列
Str(数値)
文字列を数値
Val(文字列式)
■検索
・文字列
FIND(検索文字,検索対象文字列)
・セル
MATCH(検索値,範囲 [,照合の型])
行 MATCH("ABC",C3:E3,0)
列 MATCH("ABC",C3:C10,0)
■別シートの値
シート名!セル
=IF(シート!X6="","",シート!X6)
■別ファイルの値
[ファイル名]シート名!セル
=[高橋_Faq修正エビ20120808.xls]template!$AT$241
//*******VBA*************************************************
■オブジェクト
ActiveSheet.
Worksheets("Sheet1").

■宣言
配列の宣言
Dim A(10) As String //数を指定しなければならない
・後で指定する場合
Dim A() As String
ReDim A(IX)

・配列を引数で受け取る場合 Dim row As Variant
・配列の要素数 UBound(myList)

■範囲
cells(縦、横)
range(横、縦)
row1 から row2までの行 rows(row1 & ":" & row2)
A1セルから下方向の入直済み終端セル Range("A1").End(xlDown)
A1セルから下方向の入直済み終端セルまでの範囲 Range("A1", Range("A1").End(xlDown))

■選択
結合されてるとselectはただしく選択しない
Range("B2").Select
Range("A1,B3").Select 複数
Range("A1:B3").Select 範囲
Range("A1", "B3").Select 範囲
Range("B1").Range("B2:D3").Select セルB1を基準にB2:D3を選択する
Cells(3, 2).Select 単一のセル
Range(Cells(1, 1), Cells(3, 2)).Select 範囲
Rows(2).Select 単一行
Columns("B").Select 単一の列
Columns("B:D").Select 複数の列
Range("B:D").Select 複数の列
Range("A1").End(xlDown).Select A1セルから下方向の入直済み終端セル
Range("A" & Rows.Count).End(xlUp).Select A1セルから上方向の入直済み終端セル
Cells(1, Columns.Count).End(xlToLeft).Select A1セルから右方向の入直済み終端セル
Range("A1").CurrentRegion.Select [Ctrl]+[*]キーで選択される範囲
Worksheets("Sheet1").UsedRange.Select 何らかの編集が行われているセル範囲

■指定範囲の先頭行
Selection.row
■指定範囲の行数
Selection.rows.Count
■行のコピー
rows("23:26").Copy
■行の挿入
rows("27:27").Insert Shift:=xlDown




■シート内検索
Cells.Find("検索文字") //位置を返す
Cells.Find("検索文字").Row //行
Cells.Find("検索文字").Column //列

■文字列内検索
InStr(対象文字列,検索文字列) //先頭からの位置を返す

■コピー
Sheets("TOP画面").Range("E2:P3").Copy Cells.Find("作成者", LookAt:=xlWhole).Offset(-1, 0)
別ファイル→別ファイル
Workbooks("画面設計.xls").Sheets("【画面①】").Copy After:=Workbooks("Book2").Sheets("Sheet1")
■画像リサイズ
Sub リサイズ()
'
' リサイズ Macro
' リサイズ80% 背面 外枠
'
Selection.ShapeRange.Height = Selection.ShapeRange.Height * 0.8
Selection.ShapeRange.ZOrder msoSendToBack
With Selection.ShapeRange.Line
.Visible = msoTrue '線の有無)
.Style = msoLineSingle '線の種類(実線)
.ForeColor.RGB = RGB(79, 129, 189) '線の色
.Transparency = 0 '線の透明度
'.Weight = 6 '線の太さ
End With
End Sub

'アクティブな最後の行を返す
'@return int
Function getActiveRows() As Integer
Dim lastrow As Integer
With ActiveSheet.UsedRange
getActiveRows = .Cells(.Count).row
End With
End Function

Sub rangeCopy()

Sheets("共通ブランドセレクト画面").Range("E27:M28").Copy
ActiveSheet.Paste
End Sub

'選択範囲の結合解除
Sub unMerge()
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
Selection.unMerge
End Sub

'合計部分の選択
Sub rangeSelectTotal()
Dim row As Integer
row = getActiveRows()
Range("E" & row - 2 & ":M" & row).Select
End Sub

'ヘッダーをコピー
Sub coppyHedder()
'コピー元ヘッダー指定
Sheets("共通ブランドセレクト画面").Range("A1:L6").Copy
'コピー先セル指定
Range("A1").Select
'コピー
ActiveSheet.Paste
'シート名を取得し指定セルに記入
Range("D3").Value = ActiveSheet.Name
End Sub

'指定列削除
Sub deleteColums(row_S As String, row_E As String)
Range(row_S & ":" & row_E).EntireColumn.Delete
End Sub

'指定列挿入
Sub insertColums(row_S As String, row_E As String)
Range(row_S & ":" & row_E).EntireColumn.Insert
End Sub

'指定列横幅変更
Sub chgColumsWidth(row_S As String, row_E As String, yokohaba As Integer)
Range(row_S & ":" & row_E).ColumnWidth = yokohaba
End Sub

'文字列の検索
'@param string str 検索文字列
'@return array(0)=Y array(1)=X
Function Search(str As String) As Variant
Dim lngYLine As Long
Dim intXLine As Integer
Dim Obj As Object
Dim ans(1) As String

Set Obj = ActiveSheet.Cells.Find(str)
If Obj Is Nothing Then
MsgBox str & "は見つかりませんでした。"
ans(0) = '0'
ans(1) = '0'
Search = ans
Else
lngYLine = ActiveSheet.Cells.Find(str).row
intXLine = ActiveSheet.Cells.Find(str).Column
ans(0) = CStr(lngYLine)
ans(1) = CStr(intXLine)
Search = ans
End If
End Function

'指定行の削除
Sub deleteRows(row_S As Variant, row_E As Variant)
If (row_S > 0) Then
Rows(row_S & ":" & row_E).Select
Selection.Delete Shift:=xlUp
End If
End Sub

'全ワークシート名取得
'「Worksheets」を「Sheets」に変更すると、グラフシートも含めた全てのシート名を書き出します。
Function getSheetNameAll() As Variant
Dim mySheet As Worksheet
Dim myCnt As Integer
Dim myList(50) As Variant

myCnt = 0

For Each mySheet In Worksheets
If (myFlag > 0) Then
myList(myCnt) = mySheet.Name
myCnt = myCnt + 1
End If
Next
getSheetNameAll = myList
End Function

'すべてのワークシートに適用ループ
Sub doAllWorkSheet()
Dim myList As Variant
Dim v As Variant
myList = getSheetNameAll
For Each v In myList
If (Len(v) > 0) Then
'ここにシートに適用する処理
Debug.Print Worksheets(v).Range("I6") + "," + v + "," + Worksheets(v).Range("C7")
End If
Next v
End Sub

*1:Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1