[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『結合セルの列数の調べ方について教えてください』(仁美)
一つのシートを例にすると、
D2 E2 F2 G2 H2 I2 J2 K2〜T2 U2〜AA2
このセルには文字列が入っていて、K2〜T2とU2〜AA2は結合されています。
最終列の隣のセル(例だとAB2)に文字列が入ることはありませんが、それより後ろの列には文字列が入るかもしれません。
A2〜C2は空欄です。(ここは固定)
どうにかして、A2〜結合セルを含んだAA2までの「27」という値を出したいのですが、どうすれば良いでしょうか?
下記に試したことを書いてみます。
Range("D2").End(xlToRight).Column
結果は11
lCol = Range("D2").End(xlToRight).Column
If Cells(2, lCol).MergeCells Then With Cells(2, lCol).MergeArea Col = lCol & .Columns.Count & "列" & vbCrLf End With End If 結果は18(間のK2〜T2の結合セルを数えてない?)
< 使用 Excel:Excel2010、使用 OS:Windows7 >
Sub test() Dim lCol As Long
lCol = 4 While Cells(2, lCol).Value <> "" lCol = Cells(2, lCol).Offset(0, 1).Column Wend lCol = lCol - 1
MsgBox lCol End Sub (???) 2016/08/25(木) 14:47
>結果は18
???私が試してみたら、結果は21だったんだけど?? >U2〜AA2は結合されています。 の始まりの列になっちゃってます。
>Cel.Address = Cel.MergeArea.Cells(1).Address まあ、ここでD11がかぶっちゃっているからなんだけど。 このままでよければ、D21の結合セル分を足しこめば??? 追加 ああ、ここでもかぶっている分 -1 しないとダメですね。
さらに追加 >lCol & .Columns.Count ↓ lCol + .Columns.Count BJ 15:12 15:30 15:37
回答ありがとうございます。
タイトルの行が2行目なので、2行目以外では判定できないんです。(空欄があったりするので)
また、後ろに文字列があるというのは、入力規則の項目のことなんですけど、
会社からこのフォーマットを使用するように指示されているので、移動したり消したりできないんです……。
???さんに提示して頂いたコードを試してみた結果、17でした。
BJさん
回答ありがとうございます。
lCol + .Columns.Count に変えてみたのですが、結果は18になりました。
(仁美) 2016/08/25(木) 16:37
無理やり(?) For/Next で書いてみました。
Sub Sample() Dim c As Range Dim x As Long
For Each c In Range("D2", Cells(2, Columns.Count).End(xlToLeft)) If c.MergeArea(1).Address = c.Address Then If IsEmpty(c) Then Exit For Else x = c.Column + c.MergeArea.Columns.Count - 1 End If End If Next
MsgBox x
End Sub
(β) 2016/08/25(木) 16:48
で、27という答えにならないということは、K2〜T2が結合されているはずが、R列の前で切れ目があって、R列が空白になっている、とかではないでしょうか?
(???) 2016/08/25(木) 17:02
>lCol + .Columns.Count に変えてみたのですが、結果は18になりました。
それはおかしいですね。 定義されたデーター配列になっていないのでは。
>Range("D2").End(xlToRight).Column の結果が11 つまりK2の列番号
>Cells(2, lCol).MergeArea.Columns.Count の結果が10 つまりK2:T2の列の数
11 + 10 = 21 になるはずですが・・・・。 BJ 17:10
回答ありがとうございます。
望みどおりの結果を得ることができました!感激です、本当にありがとうございました。
Bjさん
回答ありがとうございます。
お手数をお掛けしてすみません。表がズレていて、修正後に実行すると21になりました。
u2〜AA2もK2〜T2と同じようにして足せば良いのですよね、やってみます。ありがとうございました。
(仁美) 2016/08/25(木) 17:53
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.