<   2005年 11月 ( 26 )   > この月の画像一覧

シート名の変更

あまり使わないが、セルに新しいシート名を入力して変更するマクロを・・・
さらにシートタブの色も変更させてみた(これはオマケ)

Sub シート名変更()
 Dim mySnum As Integer
 Dim i As Integer

  mySnum = ActiveSheet.Range("a65536").End(xlUp).Row

 For i = 1 To mySnum
   With Sheets(i)
     .Name = Cells(i, 1).Value
     .Tab.ColorIndex = i + 3 '色は何でもよかった・・・
   End With
 Next
End Sub
e0080122_10544135.gif

[PR]
by slayer0210 | 2005-11-29 10:55 | マクロ

セルの値をコメントに置き換え

あまり糞の役にも立ちそうにないが、セルの値をコメントに置き換えるマクロを作ってみた。
予めF列にコメントを追加するアドレスを入力しG列にコメントを入力しておく。
そしてマクロを実行する。
e0080122_23423385.gif

 Sub コメントに置き換え()
  Dim i As Long
  Dim myadd As String
  Dim mystr As String

    For i = 1 To Range("F65536").End(xlUp).Row
      With Cells(i, 6)
        myadd = .Value
        mystr = .Offset(, 1).Value
      End With

      With Range(myadd)
        On Error Resume Next
          .Comment.Delete 'とりあえず存在するコメントを消す
        On Error GoTo 0
          .AddComment (mystr) 'コメントを追加する
      End With
   Next
 End Sub
e0080122_2350331.gif

[PR]
by slayer0210 | 2005-11-25 23:51 | マクロ

図を参照する

e0080122_22361936.gif

上図のような表(?)を作ってみた。
選択商品は、入力規則のリストを使用している。ここで選択商品名が決まったら、この表の下にイメージ図を表示させた。
また、商品のセルが空白の場合は自動的にカートが表示されるようにしている。

これは、予め表示させたい画像を別シート(同一シートでも可)に貼り付けている。
そしてそれらの画像を配置しているセルに名前をつけているのだ。
e0080122_2243116.gif

また、名前の定義を利用して表示させたい場所にある画像を選択し下図のように設定する。
e0080122_2248923.gif
また、選択された画像に対して『=画を引っ張る』とかの式を入れておかねばならない。
上手く説明が出来ないが、目的の物が完成したので良かった。
[PR]
by slayer0210 | 2005-11-24 22:52 | エクセル一般

罫線のみ削除するマクロ

表の罫線のみを削除したい場合は、通常は罫線ボタンを使ったり、セルの書式設定の罫線タブを使ったりする。
別にマクロにする必要もなかったのだが・・・

Sub 罫線のみ削除()
Dim myrange As Range
Set myrange = Selection.CurrentRegion
myrange.Borders.LineStyle = xlNone
Set myrange = Nothing
End Sub

あまりにも単純だが、アクティブセルの領域内の表を消すって点だけが良かった。
e0080122_8484224.gif

[PR]
by slayer0210 | 2005-11-24 08:49 | マクロ

IFとANDで合否判定(配列)

e0080122_926446.gif

上図の合否の判定の基準は、実技・筆記・面接すべてにおいて80点以上が合格、それ以外は不合格というものだ。
通常ならば、IF関数とAND関数を使って
=IF(AND(C3>=80,D3>=80,E3>=80),"合格","不合格")』の式を作るが
AND部分が無駄に長くなってしまう場合は、配列を使って組み立てると便利だ。

=IF(AND(C3:E3>=80),"合格","不合格")』と入力してから
配列なので Ctrl + Shift + Enter で確定する。
あとは、必要分だけ下方向へとコピーする。
[PR]
by slayer0210 | 2005-11-22 09:32 | エクセル一般

横方向の表を縦方向に

e0080122_7313821.gif
めったにないかもしれないが、上図の様にデータが横方向に並んだ表があったとしたら
後々集計するのが難しい場合がある。
そんな時に、この表を分解して縦方向へと作成するマクロを作ってみた。

Sub 縦方向の表へ()
 Dim c As Long
 Dim r As Long
 Dim i As Long
 Dim j As Long

  r = Sheets(1).UsedRange.Rows.Count

  With Sheets(2).Range("a1")
    .Value = "購入者"
    .Offset(, 1).Value = "商品名"
  End With 'とりあえずSheet2に放出するために準備

 For i = 2 To r
   c = Sheets(1).Cells(i, 1).End(xlToRight).Column
     For j = 2 To c
       If Sheets(1).Cells(i, j).Value <> "" Then
         With Sheets(2).Range("B65536").End(xlUp)
            .Offset(1).Value = Sheets(1).Cells(i, j).Value
            .Offset(1, -1).Value = Sheets(1).Cells(i, 1).Value
         End With
       End If
     Next
 Next
End Sub

何だかかなり無理やり・・・な感じもするが、一応目的の表は出来たので良しとする。
e0080122_7402969.gif

[PR]
by slayer0210 | 2005-11-22 07:42 | マクロ

目次シートの作成(相互リンク?)

目次シートの作成でも紹介したが、今回は目次シートから目的シートへと移動した後に
目次へのハイパーリンクを設定してみた。
おのおののシートのA1に"目次シートへ"という感じにしてみる。

Sub 目次シート作成()'シート間の相互リンク?
Dim mysheet As Worksheet
Dim i As Integer

 For Each mysheet In Worksheets
    If mysheet.Name = "目次シート" Then
       Application.DisplayAlerts = False
          mysheet.Delete
       Application.DisplayAlerts = True
    End If
 Next
   Worksheets.Add before:=Worksheets(1)
   ActiveSheet.Name = "目次シート"

 For i = 2 To Worksheets.Count
    Cells(i - 1, 1).Value = Sheets(i).Name
      ActiveSheet.Hyperlinks.Add Anchor:=Cells(i - 1, 1), Address:="", _
      SubAddress:=Cells(i - 1, 1).Value & "!" & "A1"
 Next

 For i = 2 To Worksheets.Count
  Worksheets(i).Activate
   ActiveSheet.Hyperlinks.Add Anchor:=Cells(1, 1), Address:="", _
SubAddress:="目次シート!A1", TextToDisplay:="目次シートへ"
Next
End Sub
e0080122_21431217.gif

[PR]
by slayer0210 | 2005-11-20 21:44 | マクロ

1行おきに足し算

例えば、下図のような表があり2行おきに足し算する場合は、Row関数、Mod関数を使って求めると便利だ。
MOD(ROW(D3),2)=1』 このような式の意味だが、D3は奇数行だということだ。
又、『MOD(ROW(D3),2)=0』だったら偶数行。
これを踏まえて『{=SUM(IF(MOD(ROW(D$3:D$8),2)=1,D$3:D$8,0))}』とする。
配列数式なので、Ctrl+Shift+Enterだ。
e0080122_12332353.gif

[PR]
by slayer0210 | 2005-11-20 12:35 | エクセル一般

TEXT関数で数値を日付に

日付のつもりで入力されている日付データをyyyy/mm/ddのような形で表示するためには
Text関数を使うと便利だ。
e0080122_915383.gif

この場合は、数値入力されているセルではなく他のセルに表示してしまうが、
同セルに表示するためには、セルの書式設定を使ってみた。
e0080122_991025.gif

[PR]
by slayer0210 | 2005-11-18 09:10 | エクセル一般

目次シートの作成

シート数が増えていくと、ブックの中から目的のシートを探すのが面倒くさくなってくる。
そんなときは、目次などを作ってハイパーリンクさせると便利だ。

Sub 目次作成()
Dim mysheet As Worksheet
Dim i As Integer

 For Each mysheet In Worksheets
   If mysheet.Name = "目次シート" Then
      Application.DisplayAlerts = False
         mysheet.Delete
      Application.DisplayAlerts = True
   End If
 Next
  Worksheets.Add before:=Worksheets(1)
  ActiveSheet.Name = "目次シート"

 For i = 2 To Worksheets.Count
   Cells(i - 1, 1).Value = Sheets(i).Name
    ActiveSheet.Hyperlinks.Add Anchor:=Cells(i - 1, 1), Address:="", _
    SubAddress:=Cells(i - 1, 1).Value & "!" & "A1"
 Next
End Sub
e0080122_13105340.gif

[PR]
by slayer0210 | 2005-11-17 13:12 | マクロ