Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
抵抗値の変換について
投稿日時: 21/03/22 15:45:47
投稿者: えっくん

お世話になります。以下文字列(あるいは数値)から以下のような計算を行い、抵抗値表示をしたいと考えています。
抵抗の値は以下のような3桁のルールで決められています。
1桁目、2桁目は抵抗値の先頭値、3桁目が乗数です。

乗残までは終わっています。22(B列)からの計算方法を知りたいです。
A列
220=22*10^0=22=22
221=22*10^1=220=220
222=22*10^2=2200=2.2Kと見せたい
223=22*10^3=22000=22Kと見せたい
224=22*10^4=220000=220Kと見せたい
225=22*10^5=2200000=2.2Mと見せたい
226=22*10^6=22000000=22Mと見せたい
227=22*10^7=220000000=220Mと見せたい
 
乗数計算として、22のB列では以下の計算をしています。
B1=LEFT(A1,2)*10^(RIGHT(A1,1))
1000の単位で切り分ける(C列)ために、
=IF(B1>=1000000,1/1000000,IF(B1>=1000,B1/1000,B1))とすることで、
220=22
221=220
222=2.2
223=22
224=220
225=2.2
226=22
227=220 という値は計算できたのですが、これらにKやMを付ける方法がわかりません。
 
計算した後につける方法、あるいは計算式の中で一度につける計算式を教えていただきたく、
投稿しました。よろしくお願いいたします。

回答
投稿日時: 21/03/22 16:25:57
投稿者: WinArrow
投稿者のウェブサイトに移動

ヒント
 
A1:=22*10^5
B1:=IF(A1>10^5,A1/10^6&"M","")

回答
投稿日時: 21/03/22 16:31:22
投稿者: んなっと

   A   B
 1 020   2
 2 220  22
 3 221  220
 4 222 2.2K
 5 223  22K
 6 224 220K
 7 225 2.2M
 8 226  22M
 9 227 220M
10 228 2.2G
 
B1
=LEFT(A1,2)*10^(MOD(REPLACE(A1,1,2,)+1,3)-1)&RIGHT(LEFT("KMGT",(REPLACE(A1,1,2,)+1)/3))
下方向・↓

回答
投稿日時: 21/03/22 20:47:47
投稿者: MMYS

電子機器の製造現場では下記のチップ抵抗値もありますが、大丈夫ですか。
 
1R0 ⇒ 1Ω
R10 ⇒ 0.1Ω
1R2 ⇒ 1.2Ω
12L ⇒ 12mΩ
 
参考
https://spiceman.jp/resistor-value/
 
 
ところで、なぜその計算が必要なのですか。
 
製造現場などの実務だと、直感で抵抗値は分かるようになります。
その計算が必要な時は、新人教育用ぐらいだと思うのですが。
 
※業務に従事していると、表記を見た瞬間に抵抗値はわかるようになります。
ちなみに、コンデンサの容量もです。

投稿日時: 21/03/23 09:25:20
投稿者: えっくん

WinArrow さんへ
ありがとうございます。【&】を使うのですね。
 
んなっとさんへ
あろがとうございます。 難しいですね、勉強します。
 
MMYS さんへ
そうでした。、、、
この場合も想定しなければなりませんね。
 
部品型式から抵抗値を求め、これをデータベースに自動登録することをかんがえています。
作業者が「200」Ωで検索すると200Ωの部品が画面に出てくるような形態です。
 
Rがある場合についてもご教示していただけると嬉しいです。
よろしくお願いします。
 
 

回答
投稿日時: 21/03/23 12:17:18
投稿者: んなっと

式を試した結果はどうだったのですか?
まずはそれを書き込みましょう。

投稿日時: 21/03/23 12:31:55
投稿者: えっくん

んなっとさん 、WinArrow さん
 
=IF(K2>=1000000,K2/1000000&"M",IF(K2>=1000,K2/1000&"K",K2))
とすることでRが無い場合は解決できました。ありがとうございました。
 

回答
投稿日時: 21/03/24 23:13:45
投稿者: MMYS

えっくん さんの引用:

部品型式から抵抗値を求め、これをデータベースに自動登録することをかんがえています。
作業者が「200」Ωで検索すると200Ωの部品が画面に出てくるような形態です。
 
Rがある場合についてもご教示していただけると嬉しいです。

私だったら、VBAで処理し、同時にデータベースに登録する処理を書きます。
 
ただし、部品の型式は、単純に 102 とは書いていません。
たとえば、下記は部品の正式形式ですが、質問者さんは、どのように処理を考えているのでしょうか。
 
RK73H1JTTD1001F	  KOA    (1kΩ)
MCR03EZPJ102	  ローム    (1kΩ)
RR0816P-102-D	  進工業    (1kΩ)
ERA3ARB102V	  Panasonic (1kΩ)
RK73Z1ETTP	  KOA    (0Ω)
RK73Z1JTTD	  KOA    (0Ω)
RK73H1JTTD1R20F   KOA    (1.2Ω)
RK73H2BTTD51R0F	  KOA    (51Ω)
RK73H1JTTD1003F	  KOA    (100kΩ)
MCR03EZPFX1003	  ローム    (100kΩ)

※KOA,ローム,進工業,Panasonicは、部品メーカーです。

 
最初にも、書きましたが、
製造担当者であれば、型式から抵抗値は、すぐに分かります。
設計担当者なら、部品の選定ぐらい出来ないと仕事は任せられないでしょう。
 

投稿日時: 21/03/25 09:21:34
投稿者: えっくん

MMYS さんへ
コメントありがとうございます。わざわざ例まで出していただいて恐縮です。
 
各メーカの各シリーズごとに発番ルールがありますので、
個々のシリーズごとにMID機能を使って抵抗コード(3桁、4桁)やチップ
サイズコードの文字列を抽出してから目でわかる書式に変換しています。
 
回路図作成時にメーカ品番で部品選択するとその仕様(抵抗値、チップサイズ)を
図面の抵抗の近くに「R1 100Ω1608」と仕様を表示させる(メーカ品番が変わると
表示する内容を変わるためのデータ変換部分として今回、変換手法をお聞きしています。
 
製造現場のほうは型番があれば製造できますのでこの作業は必要ないのですが、
回路図から電気特性評価等する場合は型番ではなく仕様を見たいのです。
 

回答
投稿日時: 21/03/25 10:20:09
投稿者: んなっと

質問内容が変わったのですから、もう一度各種パターンの具体例つきで
質問を作成してください。最初からやり直し。

回答
投稿日時: 21/03/26 08:57:01
投稿者: Suzu

引用:
回路図作成時にメーカ品番で部品選択するとその仕様(抵抗値、チップサイズ)を
図面の抵抗の近くに「R1 100Ω1608」と仕様を表示させる(メーカ品番が変わると
表示する内容を変わるためのデータ変換部分として今回、変換手法をお聞きしています。

 
 
メーカー品番から 仕様を計算にて算出する方法もあるでしょうが、
メーカーによっても、書き方が変わると思います。
 
であれば、都度計算に算出するのではなく
初めから メーカー品番 と 仕様を 併記したデータベースを持たせてはどうでしょうか。

投稿日時: 21/03/26 20:44:38
投稿者: えっくん

Suzuさんへ
 
そのデータベースを作るための変換式を考えています。
回路図に入力する都度計算するのではなく、回路図に入れる部品を選択した時にデータベースから仕様を取り出して回路図に書き込みます。
 
元々変換式の質問を出していましたが、途中から運用の話に変わってしまってます。
すみません。運用についてはこれ以上コメント差し控えさせていただきます。
 
RやLに関する変換式についてはもう少し自分で調べて、わからない場合は別途質問させていただきます。
 
皆さんコメントありがとうございました。勉強になりました。

回答
投稿日時: 21/03/28 10:21:32
投稿者: Suzu

引用:
元々変換式の質問を出していましたが、途中から運用の話に変わってしまってます。
すみません。運用についてはこれ以上コメント差し控えさせていただきます。
 
RやLに関する変換式についてはもう少し自分で調べて、わからない場合は別途質問させていただきます。

 
運用と言いますか、数値計算をしないといけないのでしょうか?
 
RやL を含んだ 数値部 は 特定できているのですよね?
 
引用:
220=22*10^0=22=22
 :
227=22*10^7=220000000=220Mと見せたい

 
引用:
1R0 ⇒ 1Ω
R10 ⇒ 0.1Ω
1R2 ⇒ 1.2Ω
12L ⇒ 12mΩ

 
の部分を、変換式 で算出するのではなく、変換表として持てば良いのではないでしょうか。

回答
投稿日時: 21/03/28 12:11:26
投稿者: んなっと

RとLを小数点に置換して*1、Lがあったら最後に小文字のmをつけるだけのような気がします。
ただ、まだほかにパターンがあるのかもしれませんね。

回答
投稿日時: 21/03/28 12:55:20
投稿者: MMYS

んなっと さんの引用:

ただ、まだほかにパターンがあるのかもしれませんね。

抵抗値の表記は、日本工業規格(JIS) 国際規格(ISO)で定められています。
https://jp.rs-online.com/web/generalDisplay.html?id=ideas-and-advice/resistors-guide
  
つまり、抵抗値は型番に記載されており、表記方法も決まっています。
なので、例えば、1KΩを検索したければ、
  
102
1001
  
の文字列を検索すれば良いわけです。
同様に4.7KΩなら
  
472
4701
  
の文字列を検索します。というわけで、別データや変換表は不要というのが私の考えです。
ちなみに、設計で必要なデータも型番に含まれます。
  
※KOAの 0Ω は例外で、ジャンパーチップ になります。
https://www.koaglobal.com/product/category/smd_resistor
  

回答
投稿日時: 21/03/28 14:18:21
投稿者: んなっと

●2段階
 
    A      B   C
 1  220      22   22
 2  221     220  220
 3  222     2200  2.2K
 4  223    22000  22K
 5  224    220000  220K
 6  225   2200000  2.2M
 7  226   22000000  22M
 8  227  220000000  220M
 9  228  2200000000  2.2G
10  229 22000000000  22G
11 2210     221  221
12 2211     2210 2.21K
13 2212    22100 22.1K
14 2213    221000  221K
15 2214   2210000 2.21M
16 2215   22100000 22.1M
17 2216  221000000  221M
18 2217  2210000000 2.21G
19 2218 22100000000 22.1G
20  2R4     2.4  2.4
21  24R     24.   24
22  2L4     2.4  2.4m
23  24L     24.  24m
24  R10     .10  0.1
25  1R0     1.0   1
26  102     1000   1K
27 1001     1000   1K
28  472     4700  4.7K
29 4701     4700  4.7K
 
B1
=IFERROR(TEXT(A1,"0!E0")*1,SUBSTITUTE(SUBSTITUTE(A1,"R","."),"L","."))
下方向・↓
C1
=IF(COUNTIF(B1,"*.*"),1*B1&IF(COUNTIF(A1,"*L*"),"m",""),B1/10^FLOOR(LEN(B1)-1,3)&RIGHT(LEFT("KMG",(LEN(B1)-1)/3)))
下方向・↓
 
●直接
 
    A   B
 1  220   22
 2  221  220
 3  222  2.2K
 4  223  22K
 5  224  220K
 6  225  2.2M
 7  226  22M
 8  227  220M
 9  228  2.2G
10  229  22G
11 2210  221
12 2211 2.21K
13 2212 22.1K
14 2213  221K
15 2214 2.21M
16 2215 22.1M
17 2216  221M
18 2217 2.21G
19 2218 22.1G
20 2219  221G
21  2R4  2.4
22  24R   24
23  2L4  2.4m
24  24L  24m
25  R10  0.1
26  1R0   1
27  102   1K
28 1001   1K
29  472  4.7K
30 4701  4.7K
 
B1
=IFERROR(TEXT(A1,"0!E0")/10^FLOOR(RIGHT(A1)+LEN(A1)-2,3)&RIGHT(LEFT("KMG",(RIGHT(A1)+LEN(A1)-2)/3)),LOOKUP(10^9,1*SUBSTITUTE(A1,{"R","L"},"."))&IF(COUNTIF(A1,"*L*"),"m",""))
下方向・↓

投稿日時: 21/04/05 11:48:01
投稿者: えっくん

皆さん
3/26に一応の解決済みチェックを忘れていてすみませんでした。
 
その後も情報いただき恐縮しています。
皆さんのコメント参考にさせていただきます。
 
本当にありがとうございました。