- ベストアンサー
Excel2000マクロ記述について
- Excel2000マクロ記述についての質問です。滞留在庫表シートと表示再設定マスタシートを参照してマクロを作成したい場合、どのように記述すれば良いでしょうか?
- 滞留在庫表シートの条件として、C列の5行目からデータが入っており、そのデータの頭8桁がBの場合はL221をV列に表示し、A又はM又はPの場合はL222をV列に表示します。その他の場合はブランクを表示します。
- 表示再設定マスタシートでは、5行目にBを表示した場合はL221を、A又はM又はPを表示した場合はL222を表示します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。KenKen_SP です。 ご質問文には矛盾があって判断にまようのですが、コードを書いて みました。お試し下さい。 Sub Sample() Dim lngLastRow As Long Dim i As Long Dim varTmp As Variant Dim strResult As String Application.ScreenUpdating = False With Sheets("マスター") lngLastRow = .Range("C5").End(xlDown).Row For i = 5 To lngLastRow varTmp = .Cells(i, "C").Value If Not IsEmpty(varTmp) Or Len(varTmp) = 8 Then Select Case Mid$(varTmp, 8, 1) Case Is = "B" strResult = "L221" Case Is = "A", "M", "P" strResult = "L222" Case Else strResult = "" End Select .Cells(i, "V").Value = strResult End If Next i End With End Sub
その他の回答 (4)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 こちらも見ました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1543585 きちんとした全体的な内容を書かないと、マクロが必要なのか分かりません。 私が、#3 で書いた内容を移植しました。 なお、セルには、VBAから、 nullchar "" は、入らなかったはずですね。どうしても必要なら、Formula から入れる必要がありますね。 Sub TestSample() Dim c As Range Dim num As Integer 'C5 を起点とした場合 For Each c In Range("C5", Range("C65536").End(xlUp)) num = InStr("BAMP", Mid(c.Value, 8, 1)) If num > 0 Then 'V列 If num = 1 Then c.Offset(, 19).Value = "L221" If num > 1 Then c.Offset(, 19).Value = "L222" Else c.Offset(, 19).Formula = "=""""" End If Next End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
VLOOKUP関数でできます。 VBAでVLOOKUP関数を使っても簡単です。何よりどんなに複雑な 規則性のない対応でもテーブルを作ってしまえばOKです。 A1:A5に ****************** *******B********** L221 *******A********** L222 *******M********** L222 *******P********** L222 とあるとします。 B列B1に=VLOOKUP(MID(A2,8,1),$G$2:$H$5,2,FALSE) と入れてB5まで複写します。 G2:H5に B L221 A L222 M L222 P L222 を作ります。 これだと表に該当なしの場合はエラーになるので =IF(ISERROR(VLOOKUP(MID(A7,8,1),$G$2:$H$5,2,FALSE)),"",VLOOKUP(MID(A7,8,1),$G$2:$H$5,2,FALSE))とします。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 マクロでなくても出来るような気がしますね。 V5~ =IF(ISERROR(FIND(MID(C5,8,1),"BAMP")),"","L22"&1+(FIND(MID(C5,8,1),"BAMP")>1)*1) データがA列だったら、 C5 →A5 に直してください。 なお、大文字・小文字の区別があります。
- k-family
- ベストアンサー率34% (180/523)
B列(B6)に =IF(MID(A6,8,1)="B","L221",IF(MID(A6,8,1)="A","L222",IF(MID(A6,8,1)="M","L222",IF(MID(A6,8,1)="P","L222","")))) を入れ下方向へコピーします。 >c列の5行目から はa列ですよね?