エクセルVBAについて質問です。次のページにあるマクロを作ってください。ただし関数が使えるところは関数を使ってもOKです。よろしくお願いします。

http://hatena88.web.fc2.com/newpage2.shtml

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/09/15 18:14:26
  • 終了:2006/09/16 06:16:36

回答(4件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982006/09/15 19:20:06

ポイント30pt

D列

="1234" & A1 & "5678" & B1 & "90"

E列

="11" & A1 & "22" & C1 & "i33"

行に あわせて A1、B1、C1の 数字を変えてください。

http://q.hatena.ne.jp/1158311664

id:taroemon

いつもご回答ありがとうございます。

2006/09/16 03:10:40
id:rikuzai No.2

りくっち回答回数1366ベストアンサー獲得回数1412006/09/15 19:28:15

ポイント30pt

例示の表にある結果と、文章通りに算出した場合の結果が、

E2、E3(C列の参照部分をB列を参照している)と算出結果の末尾の数が違うように思うのですが…。

文章の条件だけなら↓の結果になるとかと。


A B C D E
aaaa zzzz tttt 1234aaaa5678zzzz90 11aaaa22tttti33
bbbb xxxx dddd 1234bbbb5678xxxx90 11bbbb22ddddi33
cccc yyyy ffff 1234cccc5678yyyy90 11cccc22ffffi33

↑で算出結果が間違いないのなら、

D1="1234"&A1&"5678"&B1&"90"

E1="11"&A1&"22"&C1&"i33"

で算出できるかと思います。


例示の表のように末尾を連番にしたい場合は、

D1、E1は上記の式のままで、

D2="1234"&A2&"5678"&B2&VALUE(RIGHT(D1,2))+1

E2="11"&A2&"22"&C2&VALUE(RIGHT(E1,2))+1

とすれば例示の表のように末尾が連番で算出されるかと思います。

http://dekirutoiina.jugem.jp/?eid=4

id:taroemon

ご回答ありがとうございます。

文章間違えていましたね。ご指摘ありがとうございます。

2006/09/16 03:12:08
id:captim No.3

captim回答回数109ベストアンサー獲得回数62006/09/15 23:04:53

ポイント30pt

全部関数のみでいけます。

D1に ="1234"&A1&"5678"&B1&"90" を記入

E1に ="11"&A1&"22"&C1&"i33" を記入

残りのD列とE列はコピーとかしてください。

URLはダミーです:http://q.hatena.ne.jp/

id:taroemon

ご回答ありがとうございます。

これで結構です。

使ってみて分かったのですが、どうも関数では具合が悪いようです。マクロで操作する方法をお待ちしています。

2006/09/16 03:18:08
id:arhbwastrh No.4

arhbwastrh回答回数447ベストアンサー獲得回数232006/09/16 06:10:28

ポイント50pt
Sub test()
'扱う変数を宣言することにより、処理が早くなるらしいですw
'ソース⇒http://hp.vector.co.jp/authors/VA019204/programming/vb/vb1.htm
'Longが一番早いらしいので、特に問題が無ければ型はLongにします
'Longは-2147483648~2147483647しか扱えません

Dim Y As Long 
Dim X As Long

Y = 1 'YとXはそれぞれ縦(行)横(列)に対応しています
X = 4 '例えば、Cells(1,4)と書いた場合はD列の1行目つまりD1セルを表します


    Do Until Cells(Y, 1).Value = "" 
'A列のセルが空白になるまで以下の処理を繰り返しなさい
    
        For X = 4 To 5 
'Xが5になるまで同じ作業をしなさい
            Cells(Y, X).Replace What:="■A■", Replacement:=Cells(Y, 1).Value 
'セル内の■A■をA列にある対応するセルの内容に書き換えなさい
                        
            If X1 = 4 Then 'もしD列について作業しているなら次の行からElseまでの処理を行いなさい

                Cells(Y, X).Replace What:="○B○", Replacement:=Cells(Y, 2).Value 
               
            Else 'D列以外についての作業なら次の行からEnd Ifまでの処理を行いなさい

                Cells(Y, X).Replace What:="△C△", Replacement:=Cells(Y, 3).Value 
            
            End If
            
        Next       
        
        Y = Y + 1    '次の行に移る為Yの値を設定します
        
    Loop            

End Sub
id:taroemon

ご回答ありがとうございます。

大変助かりました。

2006/09/16 06:11:46
  • id:kaiton
    文字の置き換えをお考えなら、substitute関数でもできます。
    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE("1234■A■5678○B○90","■A■",A1),"○B○",B1),"△C△",C1)

    http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/moji_2.htm#substitute
    単純に、[編集]・[置換]では、だめなのですよね?
  • id:taknt
    最初から「この質問・回答へのコメント」を有効にしておくといいですね。

    特にこのような質問の場合は。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません