質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.02%

  • VBA

    1412questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    1215questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

VBAのMArge方法について

受付中

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 141

piyotaka

score 23

イメージ説明

上記のイメージ図において、
AならAのみでMarge、BならBのみでMargeする
記載方法方法を教えてください。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • piyotaka

    2017/11/17 09:26

    すみません。諸事情あり、載せられません。

    キャンセル

  • ExcelVBAer

    2017/11/17 09:34

    言葉で正しく伝えるか、該当箇所のコードが提示できないのであれば、回答しようがないですね。なぞなぞに付き合っている時間はないので。

    キャンセル

  • m6u

    2017/11/17 13:19

    結果として望む状況を(コードでなく手作業で施して)画像で示すことも出来ませんか?

    キャンセル

回答 2

0

・どのようなことがしたいのか、詳細な説明ができていない。
・どのようなことをしているのか、具体的な記載ができない。
正直、これでは回答のしようがないです。

⇒どんな範囲を対象にどんな結合を行うことで、こんな結果になりたい
⇒どんな範囲を対象にどんな結合を行ったが、こんな結果になってしまった

こんな記載が追記いただけるともう少し回答がつくのではないでしょうか。

コードを丸々全て提示できなくても、結合を行っている部分、その対象範囲、といった部分に絞っても提示できませんか?

とりあえず基本的なこととして

Excelでセルの範囲を指定してセル結合をした場合
・結合後のセルの値は結合範囲の左上セルの内容となります。
・左上セルが空欄の場合は、行番号の若い順、列番号の若い順に値のあるセルを探し、最初に見つけたセルの値となります。

例えば例1のAAABBBCCCという1列9行を選択範囲として結合すると、9行のセルが1セルに結合され、その値は"A"となります。
これがExcelのセル結合の仕様です。

今回やりたいこと

今回やりたいことは「例1の9行ならAの3行・Bの3行・Cの3行で結合してほしい」ということかと思います。
そして推測ですが、その方法として「1列9行を選択範囲として結合してしまっている」のではないでしょうか?

このような結合を自動的にしてくれる機能はExcel標準では備わっておりません。
選択範囲の中で同じ値が続いているセル範囲を判断して、その範囲ごとに結合するような仕組みをマクロで作るしかないと思います。

下記のサイトさんに参考になりそうな記事がありましたのでご紹介させていただきます。
⇒今日を乗り切るExcel研究所

見当違いでしたらすみません。
参考になれば幸いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

あまりマージ範囲を文字で指定することに意味を見いだせないですが、
マージのサンプルを記載します。

仕様として、
マージ範囲は、
左上と右上と左下と右下の文字列、
4点が一致している必要があります。

起点となる行・列・右下以外に違う文字が存在してもマージされます。

一回しか試してないのでバグがあるかもしれませんが。

'対象のシートがアクティブな状態で実行してください。
Sub MergeSample()

'適当に範囲を定めてください。
start_row = 2
last_row = 10
start_col = 1
last_col = 3

'列×行数分の範囲に対してマージ処理を行います。
For j = start_col To last_col

     i = start_row - 1

next_row:

     Do While (i < last_row)

        i = i + 1

        '既に結合済みなら次の行へ
        If Cells(i, j).MergeCells Then GoTo next_row

        'マージする対象の開始セルと文字を指定する
        Set marge_target = Cells(i, j)

        '横方向のマージ範囲を決める
        For c = j To last_col

            If marge_target <> Cells(i, c).Value Then Exit For
            marge_col = c

        Next

        '進みすぎた列を戻す
        c = c - 1

        '縦方向のマージ範囲を決める
        Do While (marge_target = Cells(i, j))
            i = i + 1
        Loop

        '進みすぎた行を戻す
        i = i - 1

        'ついでに右下も左上と同じ文字列でなければいけない
        If marge_target <> Cells(i, c).Value Then Err.Raise -1, "左上と右下の文字列が一致していません。"

        '左上から右下まで結合する
        Range(marge_target, Cells(i, c)).Merge

    Loop

Next

End Sub

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 91.02%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    xcodeでの画面サイズ変更方法

    swiftでサンプルコードを写しているのですが、参考書を今まで放置してたのでxcodeのバージョンが違うので画面サイズ変更の方法がわからないです。 simulatorでの表示画面

  • 受付中

    swift3でxibにあるUILabelを別のViewControllerから操作したい

    前提・実現したいこと swift3でiOSアプリを開発しています。 xibにあるUILabelを別のViewControllerから操作したいです。 xibと関連づけているV

  • 解決済

    Blender Game Engineでマテリアルを透過したい

    Blenderでゲーム開発をしようとしているものです。 Blender Renderで透過処理したマテリアルをBlender Gameに反映させたいと思っているのですが、透過でき

  • 解決済

    xcodeのUIButtonの文字が右下に固定されてします

    下記のように、UIButtonの文字が右下に固定されてします xcodeの設定を試して見ても、上手くいきません なぜmこのような現象になったか原因が知りたいです

  • 解決済

    UIScrollViewのStoryboards上でのY座標がおかしい

    UIScrollViewの設定値が、どうしても最上部がマイナス値になってしまいます。 contentOffsetの値を、実行中に y:-56 とかにするとうまく表示されるので

  • 解決済

    ACCESS クエリでの一部重複?の除外方法について

    前提・実現したいこと こんにちは、質問タイトルが適格でないかもしれませんが宜しくお願いいたします。 通販事業をしており、商品の仕入から販売までのデータベースをACCESSの

  • 解決済

    pycharmのpython console部分の色の変更

    プログラムには関係ないんですが・・・ 長時間PCの画面を見てると目が疲れてしまうので、色を変えてみようと思って 色を変更してみたのですが、python consoleの部分の色

  • 解決済

    vb2017でexcel2016操作

    vb2017を使っています。 communityです。 excel2016を開いてセルのデータを読み込みたいと思っています。 参考にしているサイトです。 http://d.

同じタグがついた質問を見る

  • VBA

    1412questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    1215questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。