[[20190306142654]] 『【交通費精算書作成】「往復」選択で入力金額を倍』(コン) ページの最後に飛ぶ

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

 

『【交通費精算書作成】「往復」選択で入力金額を倍にしたい』(コン)

下記内容にて交通精算書を作成したくマクロを組み込んで、使用しやすいものにしたいと思っておりましたが行き詰まってしまいました。
ご査収お願い致します。
※マクロ初心者となります。

【現状】
E,Fに下記関数を登録して対応しております。
=IF(A11="","",IF(H11="往/復",VLOOKUP($A11,コード表!$B$3:$I$101,3,FALSE)*2,VLOOKUP($A11,コード表!$B$3:$I$101,3,FALSE)))

別フォルダ(コード表)によく使用する交通機関のリスト登録済

(精算書フォルダ)
A:交通機関をプルダウン選択(コード表引用)
※以後B〜が印刷した際に表示される部分となります。

B:月日入力(手入力)
C:交通機関表示(Aの選択にて自動表示)
D:往路・復路・往復のいずれかをプルダウンにて選択
E:電車代表示(Aの選択にて自動表示)
F:バス代表示(Aの選択にて自動表示)
G:E,Fの合計額を自動表示(関数にて計算)
※Dにて『往復』を選択した場合は自動でコード表に入力してある片道金額を2倍表示にしてくれる。

【質問依頼内容】
上記のようにコード表に登録済のものは関数にて対応できたのですが、登録されてない交通機関を使用した場合E、Fを手入力となり関数が消える事となってしまい、Dの『往復』を選択した場合の金額を倍にする機能が使用できなくなってしまします。

希望としては、現状のコード表引用もいかしつつ、手入力した場合もDで『往復』と選択したらE,Fに代金を倍で表示させるように行いたいと思っております。

現状入力している関数+手入力時の作業をマクロで組み込めたらと思っていろいろ試してみたのですが、全く上手くいかずこちらに質問させて頂きました。

行おうとしている事が対応できる事なのか、もっと良い方法などございましたらご教示お願いいたします。

伝えている事がわかりにくかったら申し訳ありません。
初めてこのような投稿をさえて頂くため不備がありましたら教えて下さい。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


訂正

説明しやすいようにA〜Gで内容説明行ってしまった為、表示セルと不一致な点が出てしまいました。
申し訳ありません。

=IF(A11="","",IF(H11="往/復",VLOOKUP($A11,コード表!$B$3:$I$101,3,FALSE)*2,VLOOKUP($A11,コード表!$B$3:$I$101,3,FALSE)))

11セルから入力行う表となっております。
H11=D11(往路・復路・往復を選択行うセル)と見て下さい。

(コン) 2019/03/06(水) 15:03


 こんばんは ^^ 回答ではありません
みなさん、解りにくいのではないでしょうか。
下記のサンプル表の様な形式で、変更前、変更後(結果)
を明確に表示して。今少し詳しくご説明されると、多数
の回答者の皆様から、アドバイスがあると思います。 ← 思うだけですけど( ̄▽ ̄;)。。。。。フォルダ。。。ってシートのことですか。?

 シート、 清算書

      A            B      C          D            E        F        G      H         
   1                                                                                 
   2                                                                                 
   3                                                                                 
   4                                                                                 
   5                                                                                 
   6                                                                                 
   7                                                                                 
   8                                                                                 
   9                                                                                 
  10  交通機関ID   日付   交通機関   往路、復路   電車代   バス代   合計   往復選択  
  11        10005                                     190      190                   

 シート、コード表

      A   B       C             D       E       F       G       H       I      
   1                                                                           
   2                                                                           
   3      番号    機関名        区間A   区間A   区間A   区間A   区間A   区間A  
   4       10001  交通機関C4       140     280     380     560     740     820 
   5       10002  交通機関C5       120     280     300     550     760     860 
   6       10003  交通機関C6       200     210     380     590     710     810 
   7       10005  交通機関C7       190     230     330     570     760     850 
   8       10006  交通機関C8       130     270     400     520     710     890 
   9       10007  交通機関C9       150     240     340     590     790     890 
  10       10008  交通機関C10      120     220     320     580     760     830 
  11       10009  交通機関C11      190     290     320     580     750     850 
  12       10010  交通機関C12      100     240     360     540     790     840 
  13       10011  交通機関C13      170     260     330     550     730     900 
  14       10012  交通機関C14      190     240     400     510     760     900 
  15       10013  交通機関C15      150     220     340     580     790     810 
  16       10014  交通機関C16      200     240     380     510     780     870 
  17       10015  交通機関C17      100     270     370     560     740     810 
  18       10016  交通機関C18      100     260     320     580     720     860 
  19       10017  交通機関C19      120     260     350     590     720     840 
  20       10018  交通機関C20      140     270     340     540     740     800 
                ↓
 101   まで
(隠居じーさん) 2019/03/06(水) 23:10

隠居じーさん様
お返事頂きましてありがとうございます。
フォルダは、シートの事でした。。。
ご質問内容以外にも多々説明ミスもあり余計解りにくい文面になっておりました。
他の方のご質問も拝見させて頂いていたのですが、どの様にご質問すればよいのかも難しく…
隠居じーさん様から頂きました内容をご参考に再度改めてこちらにご質問を投稿?させていただこうと思います。

説明例までご丁寧に記入頂きましてありがとうございました。
(コン) 2019/03/07(木) 13:45


【訂正】《精算書作成》
以前、投稿お願いさせて頂いておりましたが内容が解りにくい表現となっておりました為
改めて整理した内容にてご質問させて頂きます。
まだ解りにくい表現となっているかもしれませんが…
下記のような事を行いたく、ご教授お願い致します。

    A       B       C        D   
1       (往路/復路/往復)   100
2
3

C1にすでに金額が入力されている状況で、B1の条件( 往路 / 復路 / 往復 ※プルダウンリスト)を元にB1を『往復』とした時C1の金額を2倍の表示としたい。(C1=200)
C1に条件選択後の計算結果を自動で上書きさせる方法はありますでしょうか。

※マクロ初心者の為、難しい表現になりますとまだ解らない事が多々ある為、
解りやすく教えて頂けましたら助かります。
よろしくお願い致します。

(コン) 2019/03/11(月) 15:31


 趣旨から外れた考え方で申し訳ないですが、マクロが必要なんですかねぇ。

 C列を常に片道料金と決めて置けばいいんじゃないですか?

 後で、往復の料金が必要な場面になったら、
 そこで2倍換算する数式を書けば済む話だと思っちゃうのですが・・

(半平太) 2019/03/11(月) 15:58


洋平太 様

早速のお返事頂きましてありがとうございます。

説明不足があり申し訳ありません。
他の方にも使用して頂く精算表の作成を行っており
入力後に片道ではなく往復だったと気が付いた場合
『往復』の選択を行うだけで2倍の数字が表示され、元の数字に上書き行う
方法がないかと思いご質問させて頂いておりました。

表は、「日付、交通機関、往復等、バス電車の賃料、合計額」が表記、印刷されるものとなっております。

説明がへたくそで申し訳ありません。

(コン) 2019/03/11(月) 16:38


半平太さま

お名前間違え申し訳ありません。
(コン) 2019/03/11(月) 16:39


 名前の事は気にしておりません。よくある事なので。

 >他の方にも使用して頂く精算表の作成を行っており 
 >入力後に片道ではなく往復だったと気が付いた場合 
 >『往復』の選択を行うだけで2倍の数字が表示され、元の数字に上書き行う 
 >方法がないかと思いご質問させて頂いておりました。 

 では、他の方が間違いなくC列に往復の料金を入れたのに、その後「あっ、往復だよね」ということで
 『往復』を選択したりすることは無いんですか?(その時は2倍になっちゃマズい事になりますけど・・)

 私には、うまく機能するとは、とても思えないのですが、そんな心配は要らないと言う事なら、
 他の回答者のレスをお待ちください。失礼しました。

(半平太) 2019/03/11(月) 16:50


半平太さま

再度、早速のお返事頂きましてありがとうございます。

元々往復の金額で入力していたのに、「往復」を選択する事によって
さらに2倍になってしまうという事ですよね。
確かに!その場合はマズイ事になってしまします・・・

今回はそこは考えない事として、シンプルにすでに金額が入力されている状況で
「往復」と選択した場合2倍の計算結果を自動で上書きさせる方法でマクロ等で
対応行う事ができるのかでお伺いさせていただけましたらと思います。

初めてこのような所でご質問させて頂く為、多々不備がある中
ご丁寧にお返事頂きましてありがとうございました。

他の回答者さまからのレスをお待ちしたいと思います。
(コン) 2019/03/11(月) 17:14


 私も運用方法には反対意見ですが、やってみてダメだったらフィードバックもらえるとありがたいです。
 1)B列が変更された場合
    C列が塗りつぶしの場合、お伺いを立てる。
    強行する場合、往復なら2倍、それ以外なら何もしない。
 2)C列が変更された場合
    問答無用でB列の値とC列の塗りつぶしをクリア
 注意点 マクロが無効になっていたらアウト
     最初から 往復 と入力されていたらアウト(C列が先に入力されている前提)
     手動で色を消されたらアウト
     往復から片道になった場合アウト

    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim r As Range
        Dim flg As Boolean
        Application.EnableEvents = False
        'B列の行のC列が塗りつぶしされていない場合、B列が往復且つC列の値が数値且つ0より大きい場合、値を2倍にして、C列のセルを塗りつぶし
        If Not Intersect(Target, Range("B:B")) Is Nothing Then
            For Each r In Intersect(Target, Range("B:B"))
                flg = True
                With r.Offset(, 1)
                    If .Interior.ColorIndex <> xlNone Then flg = MsgBox("既に変更済みの値です。" & .Address(0, 0) & " = " & .Value & "を基準に再計算しますか?", vbYesNo)
                    If flg Then
                        If IsNumeric(.Value) Then
                            If .Value > 0 Then
                                If r.Value = "往復" Then
                                    .Value = .Value * 2
                                    .Interior.Color = vbYellow
                                End If
                            End If
                        Else
                            .Interior.Color = vbRed
                        End If
                    End If
                End With
            Next r
        End If
        'C列が変更されたら問答無用でB列の値を消す
        If Not Intersect(Target, Range("C:C")) Is Nothing Then
            With Intersect(Target, Range("C:C"))
                .Interior.ColorIndex = xlNone
                .Offset(, -1).ClearContents
            End With
        End If
        Application.EnableEvents = True
    End Sub

(稲葉) 2019/03/12(火) 09:19


 こんにちは。

 今、新規でつくっているものなのであれば、ちゃんと使いやすいものを
 作ったほうがいいのではないかと思います。

 この件は、交通費について、単価、数量、金額の列を
 作ったほうがいいとおもいますけど。

 往復の場合、数量を変更すればいいだけなので。

 往復割引を考慮不要の交通費精算ってなんかうらやましいでね。

(でれすけ) 2019/03/12(火) 10:25


稲葉 様

お忙しい中ご回答頂きましてありがとうございました。
早速、頂いたマクロを組み込んで行ってみた所、やりたかった動作を行う事が出来ました!!
もっと簡単な事なのかと思っていただのですが…私には思っていた以上に複雑なマクロで
こちらでご質問させて頂き回答頂けて嬉しく思っております。

ただ、こちらを参考に実際使用する精算書に組み込めば!と思い行ってみたのですが、上手く使用できず…
("B:B")・("C:C")に入力する列を変更すればよいだけなのかなと思っていただのですが・・・
下記のような場合だとまた使用できないものになってしまうのでしょうか。
頂いたマクロもあまり理解出来ておらずで…
もしよろしければ、ここを変えれば等お返事頂けましたらと思います。

【使用精算書】
シート?@〈コード表〉
  A      B       C    D     E   F   G   H
1| ?a@|  交通機関  | 電車 | バス | 航空 |日当|宿泊| 合計 |
2| 1    新宿〜東京    194                    194
3| 2    新宿〜横浜    550                    550
4| 3    新宿〜池袋東口  154    206               360

100|101

シート?A〈精算書〉

     (A)       | BCD |   EFG   |   HI  | JK  | LMN | OP  | QR  | ST  |  UVW |
~9|
10|(コード表選択)|月日|交通機関|往・復|電車|バス|航空|日当|宿泊| 合計
11| (?aj1     3/1 新宿〜東京 往路   194                 194
12|  (?aj3     3/2 新宿〜池袋東口 往/復  308   412                      720
13|  (選択なし手入力) 3/3 品川〜横浜 往路  288                            288
14|   (選択なし手入力)  3/4  品川〜横浜 往/復 576              576
〜
18|      【計】                1366  412                    \1,778
〜
24|

※ 他事項記載の関係もあり複数列で一つのセルとしております。
※ 経理提出の際、印字される範囲は、B1〜W24となります。
※ A11〜A17まではシート?@で作成したコード表(?ajをプルダウン選択できるようになっています。
※ Aで選択行った場合は「交通機関」「電車」「バス」「航空」賃料が自動入力されます。
※ 月日は手入力、「往復(選択)」「日当」「宿泊」はプルダウン選択出来る様にしています。
  (「往・復」は『往路』『復路』『往復』のいずれかで選択可能)
※ Aでコード選択した場合『往復』を選択すると自動で賃料2倍になる関数をJK/KMN/OP
にそれぞれ設定しています。

《 例/A11JKセルの場合 》
=IF(A11="","",IF(H11="往/復",VLOOKUP($A11,コード表!$B$3:$I$100,2,FALSE)*2,VLOOKUP($A11,コード表!$B$3:$I$100,2,FALSE)))

(コン) 2019/03/12(火) 14:50


でれすけ様

お返事頂きましてありがとうございます。
上記の内容でやはり難しいようであれば
頂きました内容をご参考にさせていただけましたらと思います。

自分が思っている事だけだと考え方も狭くなってしまう為、
ご参考意見頂けとてもありがたく思います。
(コン) 2019/03/12(火) 14:54


 もともと無理やり作ったものなので、自分で管理できない場合は使用を控えたほうがいいと思いますよ。
 最初に書きましたが、現状の運用方法は反対の立場です。
 ご自身で頑張ってください。
(稲葉) 2019/03/12(火) 15:07

稲葉様

早速のご返答ありがとうございます。
やはり何かあった場合、修正等行う事も私自身では難しい為
違う方法にて検討行っていきたいと思います。

ご回答作成頂きましたマクロは
別の機会で似たような事がある場合に参考に
させて頂きます。

行おうとしていた事が運用方法的にあまりよくないなと
気が付く事も出来ました為、お返事頂けて感謝しております。

迅速にご対応頂き、最後までご丁寧にお返事頂きまして
ありがとうございました。

(コン) 2019/03/12(火) 15:14


コメント返信:

[ 一覧(最新更新順) ]


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