• 締切済み

作成したいマクロがあります。。。

Wendy02の回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

うーん、何か、規則性に疑問というか、たぶん、このオリジナルがあるだろうと思いますが。何かの加減で、改行されてしまったのでしょうね。だから、こちらにとしては、そういう規則性は無視したほうが簡単かもしれません。ただし、「抜き出したい文字列」の条件としては、アルファベットと数字に限ります。 '//標準モジュール Sub Test1()  Dim rng As Range  Dim Matches As Object  Dim Match As Object  Dim i As Long, j as Long  Dim a As Variant  With CreateObject("VBScript.RegExp")   Set rng = Range("A1", Cells(Rows.Count, 1).End(xlUp))   Application.ScreenUpdating = False   For i = 1 To rng.Rows.Count    If InStr(1, rng.Cells(i, 1).Value, "(", 1) > 0 Then     .Pattern = "\(([A-z\d,]+)"    Else     .Pattern = "([A-z\d,]+)"    End If    .Global = True    Set Matches = .Execute(StrConv(rng.Cells(i, 1).Value, vbNarrow))    If Matches.Count > 0 Then     a = Matches(0).SubMatches(0)     a = Split(a, ",")     Cells(i, 2).Resize(, UBound(a) + 1).Value = a    End If    j = 0   Next  End With  Application.ScreenUpdating = True  Set rng = Nothing End Sub こちらも試してみてください。 http://okwave.jp/qa/q6334623.html ・マクロで( )内を抜く方法について

tk01223
質問者

補足

補足します。 説明が下手で申し訳ないです。。 同列の括弧に囲まれていない箇所も表示させないようにしたいのです。 [現状のマクロでのOUTPUT] R1116,R1130,R4005,            R1116   R1130   R4005 R6006,R6037,R6041,            R6006   R6037   R6041 R7022,R7023(R208,R817,R1022,     R208   R817   R1022 R4007,R4018,R4019,R4020,R4021,R4022,     R4007   R4018   R4019 R5018,R7009は実行)            R5018   R7009 R1112,R1113,R1114,            R1112   R1113   R1114 R933,R1020,R1104,              R933   R1020   R1104 括弧内以外のものも表示されないようにしたい。。 R1116,R1130,R4005, ←OUTPUTなし R6006,R6037,R6041, ←OUTPUTなし R7022,R7023(R208,R817,R1022,            R208 R817 R1022 R4007,R4018,R4019,R4020,R4021,R4022,       R4007   R4018   R4019 R5018,R7009は実行)                  R5018   R7009 R1112,R1113,R1114,←OUTPUTなし R933,R1020,R1104, ←OUTPUTなし 以上、よろしくお願いします。

関連するQ&A

  • マクロ作成について

    今、時刻表と合致するセルに色を付けてソートするマクロを作っています。 次のようになっています。(停留所が3つの場合)   A  B  C   D   E   F   G   H   I   J   K   L  1 2 a  0  1059 1145 1858 3 b  1  1030 1100 1130 1146 1510 1859 4 c  2  1000 1031 1101 1131 1147 1412 1511 1900 5  A列のa、b、cはそれぞれバス停名です。C2~J4に書いてある数字はそれぞれのバス停の発車時刻になります。 また、B列の数字はバス停名aを起点としてb、cのバス停までの所要時間です。B列に関してはユーザーの方で入力。以上を踏まえまして、今回実装したいことは、 (1)C2から範囲選択をして色を付け、選択した範囲とB列に入力した数字を足して、それと合致したセルに色を付ける。   A  B  C   D   E   F   G   H   I   J   K   L  1 2 a  0  1059 1145 1858 3 b  1  1030 1100 1130 1146 1510 1859 4 c  2  1000 1031 1101 1131 1147 1412 1511 1900 5 これを行うとセルC2~E2とD3、F3、H3、E4、G4、J4には色が付くことになります。 (2)(1)で色の付いたセルのみをソート(色の付いていない部分は後ろのセルへ移動)   A  B  C   D   E   F   G   H   I   J   K   L  1 2 a  0  1059 1145 1858 3 b  1  1100 1146 1859 1030 1130 1859 4 c  2  1101 1147 1900 1000 1031 1131 1412 1511 5  以上になります。これを実装するためのコードを教えては頂けないでしょうか?よろしくお願いいたします。

  • エクセルのマクロ記述について

    下記の処理をエクセルのマクロで行いたいのですが、どのように記述したよいか教えてください。 4行目から入力されている行まで下記の処理をマクロで行う。 1.J列のセル入力がCIRCLEの行で、B~E列の数値が同じセル間を結合する。 2.K列のセル入力がCIRCLEの行で、F~I列の数値が同じセル間を結合する。 3.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じ場合、B列をB列の数値XC列の数値とし、B~E列のセルを結合する。 4.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じ場合、F列をF列の数値XG列の数値とし、F~I列のセルを結合する。 5.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じでない場合、B列をB列の数値XC列の数値とし、B,C列のセルを結合する。又、D列をD列の数値XE列の数値とし、D,E列のセルを結合する。 6.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じでない場合、F列をF列の数値XG列の数値とし、F,G列のセルを結合する。又、H列をH列の数値XI列の数値とし、H,I列のセルを結合する。 7.J列のセル入力がSHAPEの行で、B~E列は何もしない 8.K列のセル入力がSHAPEの行で、F~I列は何もしない

  • エクセル マクロでセルを自動移動

    例1のようになっているエクセル表があります。 データは右方向、下方向へ増えます。 Cの列以降は4つ単位でしかデータは増えません。 それを例2の表のように列A,Bのデータはそのままに Cの列以降の4つのセルを区切りに下の行に移動して、 空白の列まで言ったらA2の行以降を最後の行まで繰り返しするという マクロを書くことは可能でしょうか。 出来ましたらそのマクロを教えてください。 例1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3 M3 N3 例2 A1 B1 C1 D1 E1 F1 A1 B1 G1 H1 I1 J1 A1 B1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 A2 B2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 A3 B3 G3 H3 I3 J3 A3 B3 K3 L3 M3 N3

  • Excel 2007のマクロ記述について

    Excel 2007で、B4セルからI最終行までの整数のみを小数点以下1桁にする処理をマクロで実行したいのですが、どのように記述したらよいか教えてください。 最終行とはI列にセルの値がある最後の行です。 下記の例のマクロ実行結果は、1→1.0、2→2.0となります。 (例)      列      A  B    C    D    E   F  G   H  I    J      K  行4  A1 0.9   0.9   0.9   0.9  1.2  1.2   2  2   CIRCLE  CIRCLE    5  A2 1.4   1.4   1.6   1.6   1   1  1.5  1.5  CIRCLE  CIRCLE    6  A3 0.71  0.71   0.71  0.71  1   1  1.5  1.5  CIRCLE  CIRCLE マクロ実行結果      列      A  B    C    D    E   F  G   H   I    J      K  行4  A1 0.9   0.9   0.9   0.9  1.2  1.2  2.0  2.0  CIRCLE  CIRCLE    5  A2 1.4   1.4   1.6   1.6  1.0  1.0  1.5  1.5  CIRCLE  CIRCLE    6  A3 0.71  0.71   0.71  0.71  1.0  1.0  1.5  1.5  CIRCLE  CIRCLE

  • Excelで飛び飛びのセル(列)を参照したいのですが…その2

     ある「sheet1」で、G1="A",H1="B",I1="C",J1="D",K1="E",L1="F",M1="G",N1="H",O1="I",P1="J",Q1="K",・・というように文字が入力されているとすると、5列飛びの値A,F,K・・・(G1,L1,Q1・・・)が欲しいのです。そして、その値が「sheet2」に、C5=A,D5=F,E5=K,F5=P・・・となるようにしたいのです。ただ数値が5ずつ増加するのではなく、そのセルに入力されている文字列を参照したいのです。  それをまた、「sheet1」の、G2="A",H2="B",I2="C",J2="D"・・・の値でも同じ事をしたいのですが・・・。  よろしくお願いします。

  • エクセル数式について

    A1のセルに¥123,456,789 9桁の数値があり、 B1~K1のセルに左から順に(下記の通り)表示したいのですが、 どのような方法がありますか? B1→\ C1→1 D1→2 E1→3 F1→4  G1→5 H1→6 I1→7 J1→8 K1→9

  • エクセル計算式

       A    B    C    D    E    F   G   H   I   J    K    L  1 名前(1) 80.00  50.0  51.0 ×54.0 80.0  85.0  90.0  51.0   90.0  141.0  2 2 名前(2) 79.00  50.0 ×52.0 ×53.0  88.0 89.0 91.0 50.0  91.0 141.0 1 このとき、      C~EのMAXをIに(×の場合は00.0で計算)      F~HのMAXをJに(×の場合は00.0で計算)      (※C~Hの前には×を入れるためのセルあり)      I,J,K共にBの数値が小さいほうが上位に来る      (※I,Jの後ろには、順位を入れるセルあり)      Kは、I+J      Lは、Kの計に対する順位       列がずれていて見にくいです。すみません。 どなたか回答お願いします。

  • エクセルデータの並び替え

    A列に 1 2 3 4 5 6 7 ・・・・・ B列に a b c d e f g h i j k l ・・・・ と文字列があります。 これを C列に 5つずつデータをセットにして並べたいのです。 A列    B列           C列 1     a      1 a   2 b  3 c  4 d  5 e 2     b      6 f   7 g  8 h  9 i  10 j 3     c      11 k  12 l  13 m  14 n  15 o 4     d      16 p   17 q  18 r  19 s  20 t 5     e      以下同じように続く 6     f 7     g 8     h 9     i 10     j 11     k 実際のC列のデータは トマト tomato  ネコ cat   机 desk  いす chair  かばん  bag  のようにしたいのです。 関数の扱いがわからずに苦戦しています。どうぞ、よろしくお願いします。

  • エクセルのマクロ記述について

    J列、K列に入力されている行まで下記処理を行うマクロの記述を教えてください。 J列のセルの文字列がにSHAPEの場合、その行のB~E列のセルの色を黄色にする。 K列のセルの文字列がにSHAPEの場合、その行のF~I列のセルの色を黄色にする。

  • Excelマクロ作成について

    今作成中のマクロがありまして   A  B C D E F G H I J K L M N O   ------------------------------------------------------------ 5 |     整理券   6 |      NO な 1 2 3 4 5 6 7 8 7 |  1 ○ な 17              8 |  2 △     17           9 |  3 × 1                 10|  4 □   21 19 17             11|  5 ▲ 2                 12|  6     25 21 19 17             13|  7 14|  8     29 24 21 19           15|  9   3                 16|  10 となっているエクセルシートなんですが、補足させていただきますと、Aの列は空白。Bの列はバスが停車する順番。Cの列にはバス停の名前。Dの列は整理券の出る番号です(「な」と書いてあるのはなしという意味です)。同様にE6から右も整理券の出る番号になっています。 E7から列ごとにズラーっと書いてあるのがバスの運賃です。 実装したいのは、 (1)整理券NOをD7から下に一つずつ走査していって、もし、そのセルが空白だったら一つ上のセルをコピーして貼り付ける。何か数字またはが入力されていたらスルーする。 ということを終着バス停まで行う。 (2)(1)で出来た整理券NOとE6以降の整理券NOが対応する運賃をコピーしてE列に挿入し貼り付け、2番目のバス停はF列に対応する整理券NOの運賃表を張り付ける。3番目以降は同様にG、H、I、J列…とずらして貼り付けます。 という作業を(1)と同様に終着バス停の整理券NOまで行う。 というものなのですが、どうコードを書いたら良いのか初心者のため分かりません。丸投げで失礼だとは思いますが、コードをご教授いただけたらなと思います。 よろしくお願い致します。