[[20060615101825]] 『IF』(Ryu) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『IF』(Ryu)
 今回も宜しくお願いします。土地建物を購入時の税金の計算のコードを作ろうとしてい
 るのですが、その内の不動産取得税の計算?新築住宅の場合の減税は1200万円で中古住
 宅の場合は
 sheet2(中古住宅減税額)に下の表があります
 築年月日で
 昭和51年1月1日〜昭和56年6月30日	350万円
 昭和56年7月1日〜昭和60年6月30日	420万円
 昭和60年7月1日〜平成元年3月31日	450万円
 平成元年4月1日〜平成9年3月31日	1000万円
 平成9年4月1日〜	         	1200万円 に5段階に分かれています。
 フォームのチェックマークをE11で作っています。

 Sub 税金 ( )
  Range("D15").Formula = "=IF(D7-12000000<0,0,D7-(=VLOOKUP(C16,中古住宅減税 
 額!B5:C9,2,FALSE))*0.03"  (D7は物件評価額です)
 (中古住宅の場合C16に築年月日)と素人ながらコードを作ってみたのですがやはり動
 いてくれません。正しいコードを教えていただけませんか

 正しいコードというか、マクロで入力しようとする数式が正しくないです。
 
=IF(D7-12000000<0,0,D7-(=VLOOKUP(C16,中古住宅減税額!B5:C9,2,FALSE))*0.03
            ↑                     ↑  ↑
           この = が余分。     また      ここか ここに ) が不足。 
というところでしょうか。
 
(みやほりん)(-_∂)b


 (みやほりん)(-_∂)さん早速有難うございます。今のところうまく動いてくれません
 が頑張ってみます。いつもやさしく的確なご指導を拝見しております。
 とりあえずお礼を
 (Ryu)

 まず、マクロ以前の問題として数式の段階で機能していないのではないでしょうか。
 
=IF(D7-12000000<0,0,D7-(VLOOKUP(C16,中古住宅減税額!B5:C9,2,FALSE))*0.03)
 
この数式を手入力した場合、期待する結果は得られますか?
懸念される点は以下。
 
・"昭和51年1月1日〜昭和56年6月30日"などの文字列とシリアル値(日付を表す数値)の比較では検索は成立しない。
 C16には"昭和51年1月1日〜昭和56年6月30日"のように 中古住宅減税額!B5:B9に入力されているとおりに入力する。
 
・"350万円"などの文字列に数値(0.03)を乗算することはできない。
 
(みやほりん)(-_∂)b

 昭和51年1月1日を1とのように日付を数値化しました。新築・中古住宅を別セルにしま
 した。A16にその数値いれをB16に=VLOOKUP(A16,中古住宅減税額!B5:C9,2.FALSE)で減税
 額を求めD16で=(D7-B16)*0.03で税額を求めました。チェックONのときC16に
 =IF(E11,"中古住宅","")・チェックoffのときC15に=IF(E11," ",新築住宅")を交互に
 表示することはできたのですがチェックONでC16に中古住宅を表示したときD15に新築
 の税額があるのですがそのセルを非表示にしたいのですが・・・
 (Ryu)


 表の仕様が変わったのでしょうか。
以下、VLOOKUP関数の近似値検索を利用した例を示します。
中古住宅減税額シートを次のようにします。
         [B]              [C]        [D]               [E]
[5]      昭和51年1月1日    〜       昭和56年6月30日   350万円
[6]      昭和56年7月1日    〜       昭和60年6月30日   420万円
[7]      昭和60年7月1日    〜       平成1年3月31日    450万円
[8]      平成1年4月1日     〜       平成9年3月31日    1000万円
[9]      平成9年4月1日     〜                         1200万円
 
[B][D]列
  それぞれ「昭和51年1月1日」のように入力して日付のシリアル値とします。
  (数式バーに「1976/1/1」などと表示されればOK)
[E]列
  350、420などと入力して セルの書式設定>表示形式で「ユーザー定義」を
  選択し、書式文字列(標準/Gなどとなっているところ)を 0万円 としますと、
  例示のような表示となります。
 
A16 
  入力 日付入力します。表示形式は「日付」で適当な形式を選択し、
  「平成18年6月15日」または「2006/6/15」の形式で入力します。
B16 
  セルの書式設定>表示形式で「ユーザー定義」を 0万円 とします。
  次の数式を入力します。
  =VLOOKUP(A16,中古住宅減税額!B5:E9,4,TRUE)
D16
  セルの書式設定>表示形式で「ユーザー定義」を 0万円 とします。
  =(D7-B16)*0.03
 
C15、C16
  表示を分ける理由がわかりませんので、参考として。
  =IF(E11,"中古住宅","新築住宅") としてひとつのセルで表示分けは可能。
 
>チェックONでC16に中古住宅を表示したときD15に新築の税額があるのですがそのセルを非表示に
 
D15
  どのように新築の税額を表示されることになっているのかが不明ですが、
  チェックボックスはE11にリンクしているようですので、
  =IF(E11,"",新築の税額もしくは新築の税額を求める計算式)
 
日付(シリアル値)に関して。
 エクセルでは 1900年1月1日を 1 とし、一日経過ごとに 1 増加する
 数値として扱います。実態は数値ですが、これに日付・時刻の表示形式が与えられた
 時に「シリアル値」と特別な呼び方をする慣例。
 2006/6/15をセルに入力し、表示形式を「数値」としますと、38883 が表示されます。
 これは1900年1月1日を1として数えた38883 日目であることを表します。
 
(みやほりん)(-_∂)b

 (みやほりん)(-_∂)bさん お早うございます。大変詳しく記述いただきまして本当に
 ありがとうございます。これから外出しなければなりません。帰ってからゆっくりと勉
 強をさせていただきます。
 (Ryu)
 お蔭様でB16の住宅減税額の計算・C15の新築住宅・中古住宅も一つのセルでできるよう
 になりました。D15の税額計算を
 =IF(E11,D7-12000000<0,0,D7-12000000)*0.03,(D7-B16)*0.03
 チェックをoffの場合新築住宅ででマイナスの場合は0を表示、チェックがonの場合は中
 古住宅の税率を出したいのですがこの式だとエラーが出ます。(ただ新築住宅のの計算
 式だとエラーは出ません。面倒ですが宜しくお願いします。
 (Ryu)


 ご提示の式がエラーの出る数式そのものだとすると、
「多すぎる引数が云々」が表示されますよね。
ご提示の式を見ただけではちょっと計算の筋道が良くわかりません。
 
以下、ヤマカンですが、
E11がTRUEのとき、IF(D7-12000000<0,0,D7-12000000)*0.03
E11がFALSEのとき、(D7-B16)*0.03 
 
という計算をしたいのであれば、
=IF(E11,IF(D7-12000000<0,0,D7-12000000)*0.03,(D7-B16)*0.03)
 
でしょうか。
また、余談ながら回答する人には「エラーが出ます」は情報になりません。
数式でのエラーの場合は「どんなエラーメッセージが表示されているか」を
具体的に伝えるようにしてください。また、どんな計算をしたいのか、
「あらん限りの言語能力を振り絞って」日本語で表現されることも大事です。
(みやほりん)(-_∂)b

 (みやほりん)(-_∂)bさん 本当に有難うございました。うまく動いてくれます。ご指
 摘のようによく舌足らずで同じような指摘を受けます。今後ご迷惑をかけないように気
 をつけます。
 (Ryu)

 改善したつもりが・・・・。sheet2に中古住宅減税額の表があり sheet1C16に中古住
 宅の新築年月日が「昭和60年6月1日」のようにあり
       C17に =IF(C16="","",VLOOKUP(C16,中古住宅減税額!B4:E9,4,TRUE)*10000)を
 実行すると =IF(C19=",",VLOOKUP〜のように替わってしまいFALSEになってしまいま 
 す。どこが間違っているのでしょうか?宜しくお願いします。
 (Ryu)


 Range("C17").Formula = "=IF(C16="""","""",VLOOKUP(C16,中古住宅減税額!B4:E9,4,TRUE)*10000)"
としてください。
 
コードの中では ["] から ["] までが一連の文字列として認識されますが、
そのなかで ["]をひとつ入力したいときは[""]と指定すること、というお約束があります。
"=IF(C16="","",VLOOKUP(C16,中古住宅減税額!B4:E9,4,TRUE)*10000)"
を指定すると [""] は数式バーへは ["] として入力されるので、
=IF(C16=",",VLOOKUP(C16,中古住宅減税額!B4:E9,4,TRUE)*10000)
こういう数式が入力されることになります。
(C16が","ならVLOOKUPを計算、それ以外はFALSE)
 
Formulaプロパティで[""]をセルへ入力したければ、その倍の [""""] 。
(みやほりん)(-_∂)b

 (みやほりん)(-_∂)bさん こんにちはいつも有難うございます。ここ数日間この問題
 で自分なりに何とか解決できないものかと頑張ってみたのですが・・・・
 本当に有難うございました。
 (Ryu)

 また解らない事ができましたので宜しくお願いします。
 D3に土地面積が400u、D6にその評価額が8000万円とします。D19に課税標準額があり
 400uのうち200uまでが評価額の6分の1、200u〜240uが3分の1、240u以上は評価
 額その合計というコードを作りたいのですが
 (Ryu)

 D19の課税標準額の計算が、
> 400uのうち200uまでが評価額の6分の1、200u〜240uが3分の1、240u以上は評価
> 額その合計
となるということでしょうか。
私の思考回路では次のような計算になるんですが。
「無条件に評価額*1/6、200平米を超える分は評価額*1/6上乗せ、240平米を超える分は評価額*2/3上乗せ」
D3に400、D6に 80000000 が入力されているとすると、
=D6*1/6+D6*((1-200/D3)*1/6)*(D3>200)+D6*((1-240/D3)*2/3)*(D3>240)
 
結果は「41,333,333.3333333」となるんですが、合ってますか。
端数計算はどこかの過程でするのでしょうけれども。
(みやほりん)(-_∂)b

 (みやほりん)(-_∂)bさん お早うございます。ややこしいことをお願いしまして本当
 に有難うございます。計算結果はバッチリです。
 (Ryu)

 いつもお世話になっています。宜しくお願いします。
 C15にチェックボタンで「新築住宅」「中古住宅」が入るようになっています。
 D23にD7(固定資産評価額)8000000*0.014=112000(税額)がありますがC15に「新築住
 宅」が入れば面積のうち120uまでが税額の1/2に軽減されるというコードを教えていた
 だけませんか?
 (Ryu)


 土地面積は前題と同じくD3であると仮定します。
「C15が"新築住宅"のときは無条件に税額*1/2、120平米を超える分へ税額*1/2上乗せ」
=IF(C15="新築住宅",D23*1/2+D23*((1-120/D3)*1/2)*(D3>120),"")
 
それからいまさらですが、
コード って表現されていますが、「マクロのVBAコード」と混同しそう。
セルに入力されるものは、「計算式」「関数」「数式」と表現されてはいかが?
(みやほりん)(-_∂)b

 いつも有難うございます。この質問はVBAのModule 1で書いています。それをコードと
 思っていました。今後は計算式等の表現をします。
 (Ryu)


 最初の流れから、VBAでの処理のこととはわかっているのですが、
>コードを教えていただけませんか?
と聞かれると、セルに代入する計算式を提示すべきか、それとも、
コードだけで計算してその計算結果をセルに代入するだけのものを提示すべきか、
ちょっとまようもので。
 
ところで、
最近、マクロで計算式・関数をセルへ代入する、って言う相談が多い気がします。
新規シートへ、マクロで計算式を埋め込んでいく目的と推測しますが、
計算式を埋め込んだテンプレートを挿入するだけで済むような気もします。
(シートを量産する用法も実は疑問を感じるのですが)
(みやほりん)(-_∂)b

 難しいことはよく分かりませんが初心者のものにとっては本当に感謝しています。
 これからも宜しくお願いします。
 (Ryu)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.