• 締切済み

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

Wendy02の回答

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

#3で、「こちらにとしては、そういう規則性は無視したほうが簡単かもしれません。」 としていたので、#3の結果は当然かもしれません。 こういう質問は、途中でどんでん返しの内容が出てくるので、まず、標準的な内容で書いてみました。実務では、そう簡単でないことも多いものですが、実際、コードを書いて、人の反応をみないと、分からないからです。 '現在、括弧は、全角はないものとして作られています。もし、入り込む要素がある場合は、「誤動作を避けるために空白値を抜く」の次に、同じようなコードで置換しなければなりません。 ===== Sub Test1R()  Dim rng As Range  Dim buf As String  Dim Matches As Object  Dim Match As Object  Dim i As Long, j As Long  Dim a As Variant  Dim flg As Boolean  With CreateObject("VBScript.RegExp")   Set rng = Range("A1", Cells(Rows.Count, 1).End(xlUp))   Application.ScreenUpdating = False   For i = 1 To rng.Rows.Count    buf = rng.Cells(i, 1).Value    buf = Replace(buf, Space(1), "", , , 1) '誤動作を避けるために空白値を抜く    If InStr(1, buf, "(", 1) > 0 Then     flg = True     .Pattern = "\(([A-z\d,]+)"    Else     .Pattern = "([A-z\d,]+)"    End If    .Global = True    If flg Then     Set Matches = .Execute(StrConv(buf, 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    End If    If InStr(1, buf, ")", 1) > 0 Then     flg = False    End If   Next  End With  Application.ScreenUpdating = True  Set rng = Nothing End Sub

関連する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まで行う。 というものなのですが、どうコードを書いたら良いのか初心者のため分かりません。丸投げで失礼だとは思いますが、コードをご教授いただけたらなと思います。 よろしくお願い致します。