アプリ版:「スタンプのみでお礼する」機能のリリースについて

とある表を整形するのにこんな記述をしているのですが
Do Until Cells(i, 13).Value = ""
If Cells(i, 14).Value <> "" And Cells(i, 15).Value <> "" Then
Rows(i).Copy
Rows(i + 1).Insert
Range("A" & i & ":A" & i + 1 & ",B" & i & ":B" & i + 1 & ",C" & i & ":C" & i + 1 _
& ",D" & i & ":D" & i + 1 & ",H" & i & ":H" & i + 1 & ",I" & i & ":I" & i + 1 & _
",J" & i & ":J" & i + 1 & ",K" & i & ":K" & i + 1 & ",L" & i & ":L" & i + 1 & _
",M" & i & ":M" & i + 1 & ",P" & i & ":P" & i + 1 & ",Q" & i & ":Q" & i + 1 & _
",R" & i & ":R" & i + 1).Merge
Union(Cells(i, 15), Cells(i + 1, 14)).ClearContents
i = i + 2
j = j + 1
Else
i = i + 1
End If
Loop
上記のA1形式での記述の部分をCELLS(R,C)で書く方法はありますか?
UNIONを使ったりいろいろ試したのですが、離れていないセルがくっついてしまうんです。
これでも問題ないのですが、A1形式があまり好きではないもので。
ダミー列を入れない方法があれば、後学のためにぜひ知りたいです。

よろしくお願いします

A 回答 (2件)

一例です。



clm = Split("a,b,c,d,h,i,j,k,l,m,p,q,r", ",")
For k = 0 To UBound(clm)
Cells(i,clm(k)).Resize(2).Merge
Next

この回答への補足

見栄えがよくて、動的にすることもできて、質問の意図以上のベストなアンサーなんですが
疑問がひとつ残っていまして

たとえば
Range(Cells(1, 1), Cells(3, 3)).Merge True
で横方向に3行結合できますが、縦ってできないのでしょうか?

Range("A1:A3,B1:B3,C1:C3").Merge → R1C1形式に

使い道や必要性は?と聞かれればありませんと答えるしかないのですが。
メリットは質問の例の場合、1行で13回行う結合を1回でできる。そのぶんちょっぴり速い…くらい

一般的に回答例のような記述をするのだろうというのはわかります。応用がききますし。
ただ、A1形式で記述できるのにR1C1形式だとできないなんてことはないんじゃないかと思いまして。

ただ自分が知らないだけなのか。そういう記述にそもそも対応していないのか。

どうにも気になるので、ぜひ回答お願いします

補足日時:2012/03/26 12:13
    • good
    • 0

NO1です。


ご回答の確認を失念していました。

>Range(Cells(1, 1), Cells(3, 3)).Merge True
>で横方向に3行結合できますが、縦ってできないのでしょうか?
>Range("A1:A3,B1:B3,C1:C3").Merge → R1C1形式に
 ⇒Cellsは単一セルオブジェクトしか取得できないので不可能と思います。

>A1形式で記述できるのにR1C1形式だとできないなんてことはないんじゃないかと思いまして。
 ⇒形式の問題ではなく、Range、Cellsのプロパティの仕様だから無理と思います。
  Rangeは単一、複数(セル、セル範囲)オブジェクトを取得
  Cellsは単一セルオブジェクトのみ取得
    • good
    • 0
この回答へのお礼

ありがとうございました、大変わかりやすかったです。

最初の回答でも不足がなかったのに、私のわがままにも付き合って頂き、重ねてお礼申し上げます。

ダブルベストアンサーです!

お礼日時:2012/03/29 13:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!