Gizport
1 回答
0
Share (facebook)
272
view
全般

教えてください。幼稚なマクロで恥ずかしいのですが、1列データをを追加...

教えてください。幼稚なマクロで恥ずかしいのですが、1列データをを追加したいのですが他の複数列の条件でデータをセットしたいのです。

よろしくお願いします。 条件
C列=" " AND I列>="(0001)" AND I列<"(0100)" →AT列 = "試験"
C列=" " AND I列>="(0100)" AND I列<"(1000)" →AT列 = "輸出"
C列="T" OR C列="S" OR C列="F" →AT列 = "陸送"
C列="B" OR C列="N" →AT列 = "陸送"
以外 →AT列 = "????"

上記条件でAT列の設定を下記、With~End Withの中に書くことは可能でしょうか?

With Sheets("uhwaB05")
.Range("AC2").Formula = "=VLOOKUP(RC[-21]&RC[-19],TP標結!ExternalData_1,2,FALSE)"
.Range("AD2").Formula = "=VLOOKUP(RC[-22]&RC[-20],TP標結!ExternalData_1,3,FALSE)"
.Range("AE2").Formula = "=IF(OR(RC[-13]=""90"",RC[-10]<6),""仕掛"",IF(RC[-10]>15,""リフマグ"",""ラック""))"
.Range("AF2").Formula = "=IF(AND(RC[-1]=""ラック"",RC[-11]<=9),INT(RC[-18]/RC[-2]),)"
.Range("AG2").Formula = "=IF(AND(RC[-2]=""ラック"",RC[-12]<=9),MOD(RC[-19]/RC[-3],1)*RC[-3],)"
.Range("AH2").Formula = "=RC[-2]+RC[-1]"
.Range("AI2").Formula = "=IF(AND(RC[-4]=""ラック"",RC[-14]>9,RC[-14]<=12),INT(RC[-21]/RC[-5]),)"
.Range("AJ2").Formula = "=IF(AND(RC[-5]=""ラック"",RC[-15]>9,RC[-15]<=12),MOD(RC[-22]/RC[-6],1)*RC[-6],)"
.Range("AK2").Formula = "=RC[-2]+RC[-1]"
.Range("AL2").Formula = "=IF(AND(RC[-7]=""ラック"",RC[-17]>12),INT(RC[-24]/RC[-8]),)"
.Range("AM2").Formula = "=IF(AND(RC[-8]=""ラック"",RC[-18]>12),MOD(RC[-25]/RC[-9],1)*RC[-9],)"
.Range("AN2").Formula = "=RC[-2]+RC[-1]"
.Range("AO2").Formula = "=RC[-7]+RC[-4]+RC[-1]"
.Range("AP2").Formula = "=INT(RC[-28]/RC[-12])"
.Range("AQ2").Formula = "=MOD(RC[-29]/RC[-13],1)*RC[-13]"
.Range("AR2").Formula = "=RC[-2]+RC[-1]"
.Range("AS2").Formula = "=LEFT(M2,LEN(M2)-LEN(TRIM(RIGHT(SUBSTITUTE(M2,""X"",REPT("" "",6)),6)))-1)"

ここに

.Range("AC2:AT2").AutoFill .Range("AC2:AT" & .Range("U2").End(xlDown).Row)
' .Range("AC2").Select
End With
Yahoo!知恵袋 5089日前
コメントする
お気に入り
1
質問者が選んだベストソリューション
こんにちは。
AT2に設定した関数のマクロです。
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(FIND(RC-43,"" BNTSF"")),""????"",IF(FIND(RC-43,"" TSFBN"")=1,IF(AND(RC-37>=1,RC-37<100),""試験"",IF(AND(RC-37>=100,RC-37<1000),""輸出"",""????"")),""陸送""))"

これは、
=IF(ISERROR(FIND(C2," BNTSF")),"????",IF(FIND(C2," TSFBN")=1,IF(AND(I2>=1,I2<100),"試験",IF(AND(I2>=100,I2<1000),"輸出","????")),"陸送"))
となっています。
まず、スペースとBNTSFの文字を比較、どれにも該当しなかったら、記号4つ、
つづいてスペースの場合はfind関数が1になるから数値の比較をします。BからFの文字だったら、漢字出力、とifの組み合わせで何とかコードにできました。
Cの判定は、単純な数値にしましたが、質問の書き方がおかしいです。数値と文字は混ぜないようにしてください。


それから、上記のコード、よく見るとextraとか、フィルターオプションをしたときに自動で作られる名前を使っています。
それ、きちんとA列のような名前に依存しないコードにしないと、予期しない場所を参照したりします。 気をつけてください。

>補足より
文字ですという部分ですけど、条件で>=のような記号は、文字列には使えません。部分的に数値として判定してほしかったら、文字列の部分参照のmid関数などで、加工してから対応です。

それから、「テキストファイルを読んだら」となっていますよね、だから、マクロになったら不具合の原因になります。このコードの前には、ファイルを読み込みする部分がありますよね、その部分の組み方によっては、データ範囲を勘違いする、という話です。

c列が""、ということでしたら、長さ0の判定をLEN(C2)で行なうか、IF(C2="",,,)としてください。いずれにしても、複雑な要求がAT列にあるので、順番に処理してください。
Yahoo!知恵袋 5082日前
シェア
 
コメントする
 

参考になったと評価
  このQ&Aは参考になりましたか?

Share (facebook)
その他の解決方法を知っていますか?
回答する
全般
66
Views
質問者が納得SONYのUWP-D11はピンマイクです。撮影する人物の襟元に付けて人の声を収録するためのものです。 したがって、人の声ですからモノラルでしか録音しません。たとえステレオ放送の歌番組であろうと、歌手の声はモノラル収録です。 この様なピンマイクでステレオ録音したければ、同じものをもう一台そろえて左右の襟にでもつけたらいかがですか? AG-AC90AにはXLRの入力が2つあるわけですから、物理的には可能です。
3753日前view66
全般
81
Views
質問者が納得こんにちは。 AT2に設定した関数のマクロです。 ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(FIND(RC[-43],"" BNTSF"")),""????"",IF(FIND(RC[-43],"" TSFBN"")=1,IF(AND(RC[-37]>=1,RC[-37]<100),""試験"&q...
5089日前view81

取扱説明書・マニュアル

2959view
http://panasonic.biz/.../index.html
もっと見る

関連製品のQ&A