11/24/2024

Excel。VBA。住所から都道府県の抽出をVBAでやってみる【prefectures】

Excel。VBA。住所から都道府県の抽出をVBAでやってみる

<Excel VBA>

データ読み込んでみたところ、セルには、都道府県からはじまる、住所が入力されていました。


これでは、作業がしにくいことがあるので、まずは、都道府県だけ抽出することにしました。


関数をつかってもいいのですが、今回は、Excel VBAでプログラムをつくって対応してみたいと思います。


次の表が対象になる表です。

住所から都道府県の抽出をVBAでやってみる

A列にデータがあります。都道府県だけB列に抽出させます。


今回つくってみたプログラム文です。

Sub 都道府県()

    Dim i As Long

    Dim lastrow As Long

    Dim ad As String

    

    lastrow = Cells(Rows.Count, "a").End(xlUp).Row

  

    For i = 2 To lastrow

        

        ad = Cells(i, "a")

        

        If Mid(ad, 4, 1) = "県" Then

            Cells(i, "b") = Left(ad, 4)

        Else

            Cells(i, "b") = Left(ad, 3)

        End If

    Next

End Sub


では、実行してみましょう。


このように、都道府県をB列に抽出することができました。


プログラム文を確認しておきましょう。


まずは、宣言文

Dim i As Long

Dim lastrow As Long

Dim ad As String


lastrow = Cells(Rows.Count, "a").End(xlUp).Row 

この行で、データの件数をlastrowに代入しています。


For i = 2 To lastrow ~Next

For文で繰り返します。

データは2件目からなので、2。


ad = Cells(i, "a")

A列のデータを変数adに代入します。


If Mid(ad, 4, 1) = "県" Then

    Cells(i, "b") = Left(ad, 4)

Else

    Cells(i, "b") = Left(ad, 3)

End If


If Else文で分岐処理をさせます。


左から4文字目が”県”だったら、左から4文字をB列に抽出。

そうでなければ、左から3文字をB列に抽出。

という処理をさせています。


A列には、住所しか入っていない。

そして、きちんとした住所であるとしております。


データが不安定な場合には、


If Mid(ad, 4, 1) = "県" Then

    Cells(i, "B").Value = Left(ad, 4)

ElseIf Mid(ad, 3, 1) = "都" Or Mid(ad, 3, 1) = "府" Or Mid(ad, 3, 1) = "道" Then

    Cells(i, "B").Value = Left(ad, 3)

Else

    Cells(i, "B").Value = "確認必要"

End If


とするといいかもしれませんね。


昔のような、相模 とか 武蔵 とか 大和 とか2文字だったら、楽だったんですけどね。

11/23/2024

Excel。対象がエラー値の#N/A以外の場合にTRUEを返すのがISERR関数です。【ISERR】

Excel。対象がエラー値の#N/A以外の場合にTRUEを返すのがISERR関数です。

<関数辞典:ISERR関数>

ISERR関数

読み方: イズイーアールアール  

読み方: イズエラー

分類: 情報 

ISERR関数

ISERR(テストの対象)

対象がエラー値の#N/A以外の場合にTRUEを返す

11/22/2024

Excel。セル内の改行を削除して、1行に戻したいけど、何かいい方法は無いのかな【CLEAN】

Excel。セル内の改行を削除して、1行に戻したいけど、何かいい方法は無いのかな

<Youtube>

セル内の文書が複数行になっている場合、どのようにしたら、元のように1行に戻すことができるのでしょうか。


列幅が原因ならば、列幅を調整すればいいのですが、Alt+Enterなどで改行されている場合には、列幅を調整しても、元に戻せません。


手早く、改行を削除したいわけです。


そこで、CLEAN関数をつかうと、手早く、改行を削除して1行に戻すことができます。

11/21/2024

Excel。積立期間は何ヵ月?それを算出するには、NPER関数がオススメです。

Excel。積立期間は何ヵ月?それを算出するには、NPER関数がオススメです。

<NPER関数>

お小遣いを毎月貯めているけど、希望する金額に到達するには、何ヵ月かかるのかを求めたい場合に、使うと便利なのが、NPER関数です。


NPER関数(エヌパー)は、Number of PERiodsの略

ナンバー・オブ・ピリオズ


次の表を使って、NPER関数を紹介します。

NPER関数

貯金箱など、金融機関に預けていなければ、年利は関係ありませんが、NPER関数の引数にありますので、B1の年利を用意しております。


月額積立金額のB2は、月々1000円貯金箱に入れる。


B3の積立目標金額は50000円まで、貯めたいという金額です。


B5には、毎月1000円を貯めて、50000円になるのに、何ヵ月かかるのでしょうかというのを求めたいわけです。


では、B5をクリックして、数式を設定していきましょう。


手入力で数式を設定したほうが、わかりやすいかと思いますが、説明の為、NPER関数のダイアログボックスをつかって説明します。


最初の引数の利率は、B1 ただし、年利で、求めたいのが、何ヵ月なので、12で割る必要があります。そのため、B1/12


定期支払額は、毎月1000円ずつなので、B2


現在価値は、貯めていないので、0


将来価値は、目標金額なので、B3


支払期間は、期末払いならば0で、とりあえず、期末払いとしておきます。


実は、これで、OKボタンをクリックすると、-50 と表示されます。


これは、2つ目の引数の「定額支払額」が、手元から資産が積立金で減るので、B2を1000ではなく、「-1000」とする必要があります。


では、B5の数式を修正して、完成します。


 =NPER(B1/12,-B2,0,B3,0)


積立期間は50と算出されましたので、1000円を毎月積み立てると、50ヵ月後には、50000円になるというわけです。

11/20/2024

Excel。ISBLANK関数は、対象が空白セルの場合にTRUEを返す関数です【ISBLANK】

Excel。ISBLANK関数は、対象が空白セルの場合にTRUEを返す関数です 

<関数辞典:ISBLANK関数>

ISBLANK関数

読み方: イズブランク  

分類: 情報 

ISBLANK関数


ISBLANK(テストの対象)

対象が空白セルの場合にTRUEを返す

11/19/2024

Excel。2024/10/13-10/19にYEAR関数など紹介したFacebookページのコメントです。【comment】

Excel。2024/10/13-10/19にYEAR関数など紹介したFacebookページのコメントです。

<Facebookページ>

Facebookページに書いた、Excelの豆知識(Trivia)です。

Facebookページ

10月13日

Excel。

XMATCH関数

読み方: エックスマッチ  

分類: 検索/行列 

XMATCH(検索値,検索範囲,[一致モード],[検索モード])

配列内での項目の相対的な位置を返す 




10月14日

Excel。

XNPV関数

読み方: エックスエヌピーヴイ  

読み方: エクストラ・ネット・プレゼント・バリュー

分類: 財務 

XNPV(割引率,キャッシュフロー,日付)

非定期キャッシュフローに対する正味現在価値を算出します 




10月15日

Excel。

XOR関数

読み方: エックスオア  

読み方: エクスクルーシブ・オア

分類: 論理 

XOR(論理式1,[論理式2],…)

複数の条件で奇数の数を満たすかどうかを調べる 




10月16日

Excel。

YEAR関数

読み方: イヤー  

分類: 日付時刻 

YEAR(シリアル値)

日付から年を算出します 




10月17日

Excel。

YEARFRAC関数

読み方: イヤーフラクション  

分類: 日付時刻 

YEARFRAC(開始日,終了日,[基準])

2つの日付の間の期間を年数で算出します 




10月18日

Excel。

YEN関数

読み方: エン  

分類: 文字列操作 

YEN(数値,[桁数])

数値を四捨五入して、円記号(¥)を付けた文字列に変換する 




10月19日

Excel。

YIELD関数

読み方: イールド  

分類: 財務 

YIELD(受渡日,満期日,利率,現在価値,償還価額,頻度,[基準])

定期利付債の利回りを算出します

11/18/2024

Excel。#DIV/0!エラーの確認には、参照元のトレースをつかってみよう【trace】

Excel。#DIV/0!エラーの確認には、参照元のトレースをつかってみよう

<絶対参照と参照元トレース>

構成比を算出した時に、#DIV/0!というエラーが発生することがあります。


この原因は、絶対参照を、常に使いたいセルに設定していないために発生するわけです。


どのセルが原因なのかを確認するために、参照元のトレースをつかって確認してみましょう。


今回用意した表です。

参照元のトレース

B6には、B2:B5の合計値が求められています。

C2には、構成比。

つまり、鉛筆の合計が、全体の中で何パーセントを占めているのかを求めたいわけです。


C2に数式を設定します。


C2の数式は、=B2/B6として、オートフィルで数式をコピーしてみました。

すると#DIV/0!というエラーが表示されてしまいました。

この#DIV/0!というエラーは、「ゼロで除算している」というエラーです。


ゼロで除算した覚えはないのですが…


このぐらいの数式ならば、目視で確認することもできますが、ここで、数式タブにある「参照元のトレース」をつかうことで、視覚的に原因がわかります。


エラーが表示されている、C2をクリックして、数式タブの「参照元のトレース」をクリックしてみましょう。


すると、どこのセルをつかって、結果を求めているのかが、参照元を矢印で確認することができます。


本来は、B6をつかってくれないと困るのですが、B7をつかった数式になっていることがわかりました。


C3の数式は、

=B3/B7

となっていることでも確認することができますが、参照元トレースをつかうことで、より、視覚的に確認することができます。


確認出来たら、「トレース矢印の削除」をクリックすると矢印を非表示にすることができます。


B6を常に使いたいので、どのようにしたらいいのかというと、絶対参照をつかって、B6を固定した数式に修正します。

C2の数式を

=B2/$B$6

と設定しました。


B6のセルをクリックした後に、F4キーを押すと、絶対参照が設定された、$B$6 に変わります。


あとは、オートフィルで数式をコピーしてみると、#DIV/0!エラーは表示されず、構成比を求めることができました。