#E1 エクセル マクロを組むまずは最初に覚えること セルとシート(0)

エクセル マクロを組む

まずは最初に覚えること セルとシート(0)

マクロがあるからエクセルを使う人も多いと思います。
マクロを使うことで、数値を計算したり、値を取得して更に編集したりすることができます。

解説動画

・セルを指定
Cells(1,1).Value = “セル”
Range(“A1″).Value=”レンジ”

・セル指定の例
Range(“A1,C5”)「A1」セルと「C5」セル 複数の単一セル
Range(“A1:C5”)「A1~C5」セル セル範囲
(抜粋)
http://www.atmarkit.co.jp/ait/articles/1402/24/news108.html

・シートを指定
Worksheets(“Sheet1”).Activate
Worksheets(“Sheet1”).Range(“A3″).Value=”sheet-A3”

参考URL
http://excelvba.pc-users.net/fol2/2_1.html

http://www.atmarkit.co.jp/ait/articles/1402/24/news108.html

#E2 エクセル マクロ リピート繰り返し文(1)

参考
http://home.att.ne.jp/zeta/gen/excel/c04p21.htm

intとLongはどちらを使うべきかは、Longのほうが扱える数が大きく処理が早いそうです。

Integer型、-32,768 ~ 32,767 
Long型、-2,147,483,648 ~ 2,147,483,647 

エクセル マクロ、IF文条件文(1)

基本
if then

elseif then

end if

・IF文
Dim a As String
if a= “あ” then

else

End if

IF a=”あ” then

elseif a=”い” then

End IF

・AND、OR
if a= “あ” AND b = “か” then

else

End if

if a= “あ” OR b = “か” then

else

End if

参考サイト
http://home.att.ne.jp/zeta/gen/excel/c04p20.htm

エクセル マクロ、条件文、Case(Select Case)文

C言語ならswitch caseですね。
int atai =1;
switch (atai) {
case 1:
処理;
break;
case 2:
処理;
break;
default:
処理;
}

エクセルのマクロではSelect Case文です。

参考サイト
http://excelvba.pc-users.net/fol6/6_2.html

エクセル マクロ 配列(3)

<ポイント>
Variant型は、要素数を指定すると格納するとき配列のように扱う
Dim mList(100) As Variant
 mList(0) = “a” 

しかし、要素数を指定しない場合は、
Dim vList As Variant
格納はvList = Array(“v”,”c”)となる
vList(0) = “c” 配列のように格納できない

サンプル

参考
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard27.htm

エクセル マクロ 数字かどうかを判別 ISNUMERIC

ISNUMBER は、ワークシート関数
ISNUMERIC は、VBAで使用する関数

ただし、IsNumericは全角の数字も数字としてTrueを返します。
10(文字) TRUE
10(数値) TRUE
“10” TRUE

参考
http://hpcgi1.nifty.com/kenzo30/b_cbbs/cbbs.cgi?mode=al2&namber=742&rev=&no=0&P=R&KLOG=8

‘全角数字
if IsNumeric(“123”) then
cells(1,1).value=”数字です”
end if

‘半角数字
if isNumeric(“123″) then
cells(1,2).value=”数字です”
end if

注意、空白の場合もTRUEを返すために、CStrで文字列にしてから判別する
IsNumeric( CStr( cells(2,1).Value ) )
‘Cells(2,1)は空白

またはそのセルが空でないとするAND判定
IsNumeric(Cells(2,1)) And Not IsEmpty(Cells(2,1))
IsNumeric(Cells(2,1)) And Cells(2,1).value <> “”
としてする

参考
http://veaba.keemoosoft.com/2012/12/322/

#E-S-1 エクセル マクロ 同じ数値が2つの列に存在するかチェック End(xlDown).Row

・列のIFチェック

A列に数値(生徒の登録番号)が数行入力されていて、B列にもA列と似た数値(A列と種類は同じ)が入力されていて、A列とB列には重複の数値がない状態にしたいときに、同じ数値が2つの列に存在するかチェックする

エクセルファイルのダウンロードはこちら

・例 A、B列の行数は同じではない。A、B列内での同じ数値は存在しない

A列
123
456
789
790

・B列
122
456(A列にも存在するので、この行で判定させたい)
788

エクセル動画

・マクロ作成の概要、方針
総当りで判別
A列の1行目をB列の全行でチェック。
次にA列の2行目をB列の全行でチェック。
以下同様にチェック

1.A列、B列の行数を取得
Dim idownA As Long
Dim idownB As Long
idownA = Cells(1, 1).End(xlDown).Row ‘行数を取得ActiveSheet.Range(“A1”).End(xlDown).Row

2.総当りで判別
3.該当の数値のセルに色をつける
Range(“A1”).Font.Color = RGB(255, 0, 0) ‘ 文字色
Range(“A1”).Interior.Color = RGB(200, 200, 200) ‘ 背景色

参考URL
http://www.tipsfound.com/VBA/07006.vbhtml

VLOOKUPの使い方、データを参照、検索

VLOOKUP(検索値,範囲,列番号,検索方法)


VLOOKUP(A2,F:G,2,0)
引数
検索したいセル、セルの範囲、検索によって入力したセルの範囲の列番号、検索方法
になります。

文章では説明しにくいのですが、
簡単にいえば、A2とセルの範囲の中の値が一致した時に列番号の値が入力されます。
番号と商品名、書籍名の一覧表があって、商品や本には番号がふってあるだけで、それがどんな商品名や書籍名なのかわかりません。でも一覧表があればそれを見ながら確認できます。でも数が多いとちょっと面倒です。
マクロを使うので、一気に番号と商品名や書籍名がわかることになります。

検索方法
0:FALSE 完全一致
1:TRUE あいまい

IFERROR(VLOOKUP(A2,F:G,2,0),””)
とすることで、エラーに成ってもブランクにすることができます。

参考HP
http://www.itc.u-toyama.ac.jp/el/spreadsheet/vlookup.html

こちらの記事もどうぞ