Excelノート 5-1 行・列

HOME  検索  索引  もくじ  関数目次ージへ        次ページへ

タイトル欄のアドレスは、エクセルファンクラブの該当する頁へのリンク先です。
詳しい事は、こちらの
お願いをご覧になってください。

1  縦と横のデータをそのまま置き換えるには?
2  ワークシート内のデータのある最終行を取得したいのですが・・・
3  セルの最終列、行を指定するには?
4  セルの最終列、行を別々に指定するには?
5  空白行をまとめて削除
6  セルの行列番号を求めるには?
7  一行おきに行の挿入するには
8  行の選択について
9  とびとびの空白行を削除するには
10 1、2、3でセルの列を選択させるには?
11 最終行を取得するには
12 最終行のアドレスを取得するには
13 最終列を取得するには
14 1行置きに網がけするには
15 複数のシートにスクロールエリアを設定するには
16 空白セルを探し、その行を削除するには
17 列の名前を変更するには(A、B、C列を1、2、3にしたい)
18 最後に結合されたセルを選択するには
19 セルの幅・高さをミリの大きさにするには
20 選択範囲の4隅のセルに行番号、列番号を取得するには?

1 縦と横のデータをそのまま置き換えるには?
Excel97、Excel2000 共通
1.置き換えるデータをコピーします。
2.移動先のセルを選択し、
  編集→形式を選択して貼り付け「行列を入れ替える」にチェックを入れてOK。
sheet1   sheet2
  左の表を
右のようにします
  C
1 1 ×
2 × 2
3 3      

 Sub miko_test()
 Dim WS1 As Worksheet, WS2 As Worksheet
 Dim i As Integer, j As Long, k As Integer, m As Long
 Set WS1 = Worksheets("sheet1")
 Set WS2 = Worksheets("sheet2")
 Application.ScreenUpdating = False
 WS2.Select
 m = Cells(Application.Rows.Count, 1).End(xlUp).Row
 With WS1
 For i = 1 To .Cells(1, Application.Columns.Count).End(xlToLeft).Column
 k = 1
 For j = 1 To .Cells(Application.Rows.Count, 1).End(xlUp).Row
 Cells(m + 1, k) = .Cells(j, i)
 k = k + 1
 Next j
 m = m + 1
 Next i
 End With
 Application.ScreenUpdating = True
End Sub

2 ワークシート内のデータのある最終行を取得したいのですが・・・
Sheet1 の最終行を取得するマクロです
Sub Test()
 Dim LastRow As Long
 With Worksheets("Sheet1").Cells.SpecialCells(xlCellTypeConstants).Areas
  With .Item(.Count)
   LastRow = .Item(.Count).Row
  End With
 End With
 MsgBox LastRow
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
3 セルの最終列、行を指定するには?
Sub Test()
 Dim r1 As Integer, r2 As Integer
 Dim c1 As Integer, c2 As Integer 
 ActiveSheet.UsedRange.Select
 r1 = Selection.Row
 r2 = Selection.Rows.Count 
 c1 = Selection.Column
 c2 = Selection.Columns.Count
 Cells(r1 + r2 - 1, c1 + c2 - 1).Select
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
4 セルの最終列、行を別々に指定するには?
aの値を変えることにより,列や行の変更が可能です.
下のコードでは,A列と1行目の最終セルが選択されます
Sub Last_Cell1()
 Dim a As Integer
 a = 1 'A列の場合
 Cells(65536, a).End(xlUp).Select
End Sub
Sub Last_Cell2()
 Dim a As Integer, b As Integer
 a = 1 '1行目の場合
 Application.ScreenUpdating = False
 For b = 255 To 1 Step -1
  Cells(a, b).Select
  If Cells(a, b).Value <> "" Then Exit For
 Next b
 Application.ScreenUpdating = True
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
5 空白行をまとめて削除
空白行をまとめて削除するなら、これで一発!
Sub Test()
  Columns(列番号指定).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
6 セルの行列番号を求めるには?
Sub 行列番号()
 Dim a As Long, b As Long
 a = ActiveCell.Row
 MsgBox "行番号は " & a & " です"
 b = ActiveCell.Column
 MsgBox "列番号は " & b & " です"
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
7 一行おきに行の挿入するには
Excel97、Excel2000 共通
1. どこか、余った列に、1,2,3,..とオートフィルでデータの最終行まで連番を振っります。
2. その連番をコピーして真下の何もない行に貼りつけます。
3. その列をキーにして(データ列も1列加えた方がなおよい)全体を並び替えすれば、
  間に1行ずつ空白行ができる格好になるので、あとは列を削除するだけです。
8 行の選択について
Rows("10:10").Select を Rows(10, 10).Select・・・ のように数値で使いたい
Range(Rows(10), Rows(10)).Select
 または
Rows(10).Select
9 とびとびの空白行を削除するには?
http://www.keep-on.com/~excelyou/2000lng4/200012/00120069.txt
 「とびとびの空白行を削除するには?」 【VBA】
Sub Del_line()
Dim myLastLow As Long
Dim i As Long
myLastLow = Range("A65536").End(xlUp).Row
For i = myLastLow To 1 Step -1
If Cells(i, 1).Value = "" Then 
  'cells(i,1) の1の部分に列の番号を入れて下さい。
Cells(i, 1).EntireRow.Delete
End If
Next i
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
10 1、2、3でセルの列を選択させるには?
Sheet1.Columns(1).Select
Sheet1.Columns(2).Select
Sheet1.Columns(3).Select
11 最終行を取得するには
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200101/01010294.txt
 「SpecialCells (xlCellTypeLastCell)について」 【VBAラウンジ】
罫線のみの行は無視して、指定の列の最終行を取得します。
 
Sub 最終行()
  Dim LastRow As Long
  LastRow = Cells(Rows.Count, 2).End(xlUp).Row  'B列対象。途中の空白セルを含む
  MsgBox LastRow
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。

また、Cells(Cells.Rows.Count, 2)は、次のように書くこともできます。
 LastRow = Cells(Application.Rows.Count,1).End(xlUp).Row  ’B列対象。表示が空白のセルを含む
 LastRow = Range("B1").End(xlDown).Row    ’B列対象。空白のセルは含まない
使用範囲内の最終行、最終列、最終セルを取得します
Sub test()
 Dim r As Long
 Dim c As Integer
 With ActiveSheet.UsedRange
  r = .Row + .Rows.Count - 1
  c = .Column + .Columns.Count - 1
 End With
 MsgBox "最終行は" & r & "です"
 MsgBox "最終列は" & c & "です"
 Cells(r, c).Select
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
SpecialCellsメソッドは、指定された条件を満たしている、すべてのセルを返します。
定数には、
以下の種類があります。
 xlCellTypeAllFormatConditions    表示形式が設定されているセル
 xlCellTypeAllValidation         条件の設定が含まれているセル
 xlCellTypeBlanks            空の文字列
 xlCellTypeComments          コメントが含まれているセル
 xlCellTypeConstants           定数が含まれているセル
 xlCellTypeFormulas           数式が含まれているセル
 xlCellTypeLastCell           使われたセル範囲内の最後のセル
 xlCellTypeSameFormatConditions  同じ表示形式が設定されているセル
 xlCellTypeSameValidation       同じ条件の設定が含まれているセル
 xlCellTypeVisible             すべての可視セル
12 最終行のアドレスを取得するには
Sub test1()   '最終行のアドレス
 Dim i As Long, myRange As Range
 i = Range("A65536").End(xlUp).Row
 Set myRange = Range("A1:A" & i)
 MsgBox myRange.Address
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
Sub test2()
 Dim i As Long, myRange As Range
 i = Cells(65536, 1).End(xlUp).Row
 Set myRange = Range(Cells(1, 1), Cells(i, 1))
 MsgBox myRange.Address
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
Sub test3()
 Dim myRange As Range
 Set myRange = Range(Range("A1"), Range("A65536").End(xlUp))
 MsgBox myRange.Address
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
Sub test4()
 Dim myRange As Range
 Set myRange = Range(Cells(1, 1), Cells(65536, 1).End(xlUp))
 MsgBox myRange.Address
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
13 最終列を取得するには
罫線のみの列は無視して、指定の行の最終列を取得します。
Sub 最終列()
 Dim LastCol As Long
 LastCol = Cells(1, Columns.Count).End(xlToLeft).Column
 ’1行目対象。途中空白含む
 
MsgBox LastCol
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。

また、Cells(Cells.Rows.Count, 2)は、次のように書くこともできます。
 LastCol = Cells(1, 256).End(xlToLeft).Column  ’1行目対象。空白のセルを含む
 LastCol = Range("A1").End(xlToRight).Column  ’1行目対象。空白のセルは含まない
14 1行置きに網がけするには
http://www.keep-on.com/~excelyou/2000lng4/200012/00120409.txt
 「1行おきに網掛けするには?」 【VBA】
Sub 一行置きに網がけ()
 Dim i As Integer
 For i = 1 To 50 Step 2     '50行の範囲で、1行飛ばし
  Range(Cells(i, 1), Cells(i, 5)).Interior.Pattern = xlGray16
 Next
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
15 複数のシートにスクロールエリアを設定するには
Private Sub Workbook_Open()
 Dim ws As Worksheet
 For Each ws In Worksheets(Array("Sheet1", "Sheet2", "Sheet3"))
  ws.ScrollArea = "A:E"
 Next
End Sub

  このコードの使い方は、マクロの使い方(3)This Workbookのモジュールにあります。
全シートの場合
Private Sub Workbook_Open()
 Dim ws As Worksheet
 For Each ws In Worksheets: ws.ScrollArea = "A:E": Next
End Sub

  このコードの使い方は、マクロの使い方(3)This Workbookのモジュールにあります。
16 空白セルを探し、その行を削除するには
Sub Test1()
 Dim i As Integer
 On Error Resume Next
 For i = 1 To 3           
 '1〜3(A〜C)列の中の空白セルを探します。
  Columns(i).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
 Next i
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
Sub Test2()
 
'A〜C列の中の空白セルを探してその行全体を削除します。
 Range("A:C").SpecialCells(xlCellTypeBlanks).EntireRow.Delete 
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
17 列の名前を変更するには(A、B、C列を1、2、3にしたい)
http://www.keep-on.com/~excelyou/2000lng5/200009/00090046.txt
 「列の名前を変更するには?」 【その他】
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200101/01010403.txt
 「cellsのアドレスの取得方法」 【VBA】
Excel97、Excel2000 共通
1. メニュー[ツール]-[オプション]
2. [全般]タブの[R1C1参照形式を使用する] のチェックを切り替えます。
Sub 列番号変更()
 With Application
 Select Case .ReferenceStyle
  Case xlA1
   .ReferenceStyle = xlR1C1
  Case xlR1C1
   .ReferenceStyle = xlA1
  End Select
 End With
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
18 結合された最後のセルを選択するには
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200101/01010113.txt
 「最後に結合されたセルを選択したい」 【VBAラウンジ】
A列の一番最後に結合されたセルを選択します。
Sub test()
 Dim i As Long
 Dim r As Long
 With Columns(1)
  r = .SpecialCells(xlCellTypeLastCell).Row
  For i = r To 1 Step -1
   If .Cells(i).MergeCells = True Then
    .Cells(i).Select: Exit Sub
   End If
  Next
 End With
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
19 セルの幅・高さをミリの大きさにするには
http://www.keep-on.com/~excelyou/2000lng1/200010/00100086.txt
 「セルの幅をセンチで表示する」 【編集】
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200208/02080028.txt
 「シート上の図形10.75cm×10.9cmを印刷すると10cm×10cm になる?」 【VBAラウンジ】
範囲を指定して行ってください。
Sub ミリによる設定()
 On Error GoTo Trap
 '選択範囲の列幅と行高を設定します。
 Dim colWmm As Variant
 Dim rowHmm As Variant
 Dim x As Integer, y As Long
 Dim CC1 As Variant 
 Dim CC2 As Variant
 Dim FS As Integer
 'スタイル(標準)のフォントサイズ取得
 FS = Int(ActiveWorkbook.Styles("Normal").Font.Size + 0.5)
 '列幅用の係数を計算
 CC2 = Int(FS / 6) * 1.5 + 2.25
 If (FS - 1) Mod 3 = 0 Then
   CC1 = Int((FS - 1) / 3) * 1.5 + 0.75
  Else
   CC1 = (Int((FS - 1) / 3) + 1) * 1.5
 End If
 colWmm = Application.InputBox(prompt:="列幅をmm単位で入力", Type:=1)
 rowHmm = Application.InputBox(prompt:="行幅をmm単位で入力", Type:=1)
 '範囲を回す
 Select Case colWmm
  Case 1 To 4
   MsgBox "列幅の5mm以下はあてにならないので中止します。", vbCritical
   Exit Sub
  Case False
   Exit Sub
  Case Else
   Application.ScreenUpdating = False
   With Selection
    For x = .Column To .Column + .Columns.Count - 1
     ActiveSheet.Columns(x).ColumnWidth = (((colWmm / _
                           (1 / 72 * 25.4)) - CC2) / CC1) * 1.075
    Next x
    For y = .Row To .Row + .Rows.Count - 1
     ActiveSheet.Rows(y).RowHeight = ((rowHmm / (1 / 72 * 25.4)) + 0.35) * 1.09
    Next y
   End With
 End Select
Trap:
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
こちらに、上記のマクロをアドイン化された物もあります。
 
http://birdcgi.zero.ad.jp/~zap50064/Tools.shtml
20 選択範囲の4隅のセルに行番号、列番号を取得するには?
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200106/01060428.txt
 「セル範囲指定した四隅の行列位置の算出方法?」 【VBAラウンジ】
Sub sample()
 MsgBox "選択範囲の左上のセルの行数は " & Selection.Row & "行目,"
 MsgBox "選択範囲の左上のセルの列数は " & _
              Selection.Columns(1).Column & "列目"
 MsgBox "選択範囲の右下のセルの行数は " & _
                      Selection.Rows(Selection.Rows.Count).Row & "行目,"
 MsgBox "選択範囲の右下のセルの列数は " & _
              Selection.Columns(Selection.Columns.Count).Column & "列目"
 MsgBox "選択範囲の右上のセルの行数は " & Selection.Row & "行目,"
 MsgBox "選択範囲の右上のセルの列数は " & _
              Selection.Columns(Selection.Columns.Count).Column & "列目"
 MsgBox "選択範囲の左下のセルの行数は " & _
              Selection.Rows(Selection.Rows.Count).Row & "行目,"
 MsgBox "選択範囲の左下のセルの列数は " & _
              Selection.Columns(1).Column & "列目"
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。

HOME  検索  索引  もくじ  関数目次ージへ        次ページへ

このページのTOPへ

 

inserted by FC2 system