[[20220531134021]] 『文字列を計算したい』(社畜の血) ページの最後に飛ぶ

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

 

『文字列を計算したい』(社畜の血)

シート1 計算シート             
     A       B     C        D   E    F
1  バナナ      田中    仕入れ/0.8    100  200   125
2  さくらんぼ    林     定価*1.2     100  200   240
3  りんご      山田    仕入れ/0.9    100  200   111
4  バナナ      田中    仕入れ/0.8    100  200   125
5  ライチ      大谷    定価*1.3     100  200   260
6  ライチ      大谷    定価*1.3     100  200   260
7  マンゴー     鈴木    仕入れ/0.9    100  200   111
8  パパイヤ     筒香    仕入れ/0.8    100  200   125

シート2 青果店一覧        
     A      B      C       
1  バナナ     田中          
2  さくらんぼ   林            
3  りんご     山田    
4  洋ナシ     岸田    
5  ライチ     大谷    
6  パパイヤ    筒香    
7  マンゴー    鈴木    
8  みかん     田中    

シート3 価格付けメモ
   A        B        C  
1  田中      仕入れ/0.8
2  林       定価*1.2
3  山田      仕入れ/0.9
4  岸田      仕入れ/0.7
5  大谷      定価*1.3
6  筒香      仕入れ/0.8
7  鈴木      仕入れ/0.9

お世話になっております
よろしくお願いします

現状
A列は品物、B列は青果店名、C列は価格付けのメモ、D列は仕入れ価格、E列は定価、F列は計算結果を入力しています
B1には=VLOOKUP(A1,Sheet2!A:B,2,FALSE)
C1には=VLOOKUP(B1,Sheet3!A:B,2,FALSE)
F1には=D1/0.8
という数式が入力されています

F列の計算は手動で入力しています

やったこと
ps://daitaideit.com/excel-calculate-char/
このサイトを参考にやってみたのですが、シート1のA列は毎回並びが変化するのでうまくいきませんでした

やりたいこと
F列の計算を手動から自動にしたい

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


 計算方法が仕入れの場合は必ず割り算、定価の場合は必ず掛け算だとして。
 =INT(IF(LEFT(C1)="仕",D1/REPLACE(C1,1,4,""),E1*REPLACE(C1,1,3,"")))
 ではどうだろうか?
(ねむねむ) 2022/05/31(火) 14:40

ねむねむさん

ありがとうございます
例に漏れがありました
大変申し訳ありません
計算メモを確認しました

仕入れの場合、割り算、掛け算があります
定価の場合も、割り算、掛け算があります
定価そのままという場合もあります

よろしくお願いします
(社畜の血) 2022/05/31(火) 14:59


 仕入れそのままはないとして、力業。
 =IFERROR(INT(IF(LEFT(C1)="仕",D1,E1)*IF(ISERROR(FIND("/",C1)),REPLACE(C1,1,MIN(FIND({"/","*"},C1&"/*")),""),1/REPLACE(C1,1,MIN(FIND({"/","*"},C1&"/*")),""))),E1)
 ではどうだろうか?
(ねむねむ) 2022/05/31(火) 15:22

ねむねむさん

仕入れそのままはないですね
すみませんでした

ありがとうございます
やりたいことが実現できました
(社畜の血) 2022/05/31(火) 15:53


 Evalをなんとかして改変してみました。あくまで参考扱いで。

 1 一行目に見出しを挿入
     商品    担当    式  仕入れ  定価    計算結果

 2. 対象範囲を「テーブル」化する

 3. 名前を定義
     仕入れ  
         D2〜D9までを選択した状態で、名前を定義する
         ・名前を「仕入れ」とする
         ・参照範囲は、デフォルトの  テーブル1[仕入れ]  のまま定義する。
     定価  も同様。
 4. マクロを標準モジュールに入れる
     Function Eval(rng As Range, n As Long)
         '数式文字列を計算する
         Dim ary As Variant
         ary = Evaluate("=" & rng(n))
         Eval = ary(n, 1)
     End Function
 5.F列に以下の式を挿入
         =Eval([式],ROW()-1) 

 【備考】
 ・テーブルなので、データを追加した場合でも、自動の修正は不要です。追随します。

 ・Application.Evaluateメソッドは、テーブルの構造化参照を評価できない、ようだ。
   これができれば、もっと簡単にできるのだろうが。
   this row を示す @ が評価できないようだ。
 ・このため、計算は冗長になっているので、計算効率は多分悪い。
 ・同様の試みをされた方がいるだろう。備忘録としてメモを残します。 
(γ) 2022/05/31(火) 16:02

コメント返信:

[ 一覧(最新更新順) ]


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