[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロでセルの結合』(Nomu)
はじめまして。
スミマセン、マクロ初心者で色々と考えていますが、良い案が
浮かばずに、困っております。ヒントだけでも、教えて頂け
ますと、幸いです、
ご相談ですが、以下のようなシートがあります。
A B C D E F
1 日付 名前 県名 商品名 希望 その他
2 4/1 〇〇〇 愛媛 パソコン 自宅に 特になし
3 送付
4 希望
5 4/2 △△△ 島根 プリンタ 午前着 特になし
6 4/2 □□□ 大阪 スキャナ 午後着 特になし
7 4/3 ◎◎◎ 香川 メモリ 会社に 特になし
8 送付
9 希望
10 致します。
5行目、6行目は、1行に収まっているので、問題無し。
2行目と7行目は、E列の文字が、それぞれ、3行目と
4行目。8行目〜10行目にわかれてしまっています。
これを、それぞれE2セルとE7セルに収めたいのです。
状況としては、E列以外は、文字が分かれてしまうような
ことはありません。また、E列の文字は、何行に分かれて
しまうのか?はランダムです。
こう言ったことは、そもそもマクロでの対応は難しいの
でしょうか。その判断さえ、出来ない状況ですので、
何卒宜しくお願い致します。
< 使用 Excel:Excel2010、使用 OS:Windows8 >
Eセルを結合して、もし空白行が出来てしまったら、
上に詰めたいです。
宜しくお願い致します。
(Nomu) 2017/04/09(日) 01:51
たとえば、こんなことですか。
Sub Sample() Dim r As Range Dim a As Range
On Error Resume Next Set r = Columns("A").SpecialCells(xlCellTypeBlanks) On Error GoTo 0
If r Is Nothing Then Exit Sub
For Each a In r.Areas With a.Cells(1).Offset(-1, 4) .Value = .Value & vbLf & Join(WorksheetFunction.Transpose(a.Offset(, 4)), vbLf) End With Next
r.EntireRow.Delete
End Sub
(β) 2017/04/09(日) 07:05
有り難うございました。
思った通りのことが出来ました。
これから、少しずつ勉強していきたいと思います。
また、宜しくお願い致します。
(Nomu) 2017/04/09(日) 20:20
ただ、私の質問が悪かったのか、取り込み行が多くなる(質問では、
セルの結合が2箇所でしたが、5箇所位になっています。)と、「型が
一致しません。」とエラーが出て、以下の部分が、黄色くなりました。
.Value = .Value & vbLf & Join(WorksheetFunction.Transpose(a.Offset(, 4)), vbLf)
また、不思議なことに、取り込み行を短くして、試すと、エラーが
出たり出なかったりします…。
色々と調べると、「型が一致しません。」は、文字通り型が違う
ことによるエラーとのことで、取り込み行の長さではなく、元の
データの問題なのかな?とも思ったりしておりますが、どうすれば
良いのか分からず…。
元のデータの問題なのか?どうすれば良いのか?等、ヒントだけでも
頂けますと、幸いです。
本当にお手数をお掛け致します。
(Nomu) 2017/04/10(月) 23:02
連続して空白があるセルで多いものはどれぐらいでしょうか。 Transposeの制限で 65536 を超えるとエラーになるということはあります。
あるいは、文字列 改行 文字列 改行 文字列 改行 ・・・・・ となる 1セルに格納される値の最大の長さって (改行を1文字に数えて)32767 文字を超えることってありますか?
あるいは・・(これが可能性高い?) 結合すべき E列のセルに エラー値 が入っているということはないですか?
(β) 2017/04/10(月) 23:33
お手数をお掛け致しまして、本当に申し訳ありません。
今日、確認したところ…
連続して空白があるセルで多いものはどれぐらいでしょうか。 7でした。
32767 文字を超えることってありますか? ありません。
色々と試してみたところ、正常に結合出来るサンプルは、一つ
のシートに結合すべき場所が、いくつあっても、全て結合出来
ましたので、βさんのご指摘のように、元のデータに問題が
あるのでは?と思いました。
エラー値の見つけ方が分からないので、明日「型が一致しませ
ん。」が出てしまったサンプルのセルを一文字ずつ確認して
みたいと思います。
また、ご相談をさせて頂くかと思いますが、お時間が、ござい
ましたら、宜しくお願い致します。
(Nomu) 2017/04/11(火) 23:22
E列を選択し ホームタブ 検索と選択の 条件を選択してジャンプ(S) 数式か定数を選んで、チェックをエラー値のみにしてOK。
エラー値があれば、選択されるのでわかります。
(β) 2017/04/11(火) 23:59
本当に色々と有り難うございます。
現状では、A〜I列まで使用しており、結合すべき必要があるのは、
E列のみと言うことに変わりはありません。
また、E列は、最大で、10行分位結合させています。
そして、本日分かったことがありまして、やはり20行とか30行
とか…まとめて、処理をさせようとすると、「型が一致しません」
とエラーが出るのですが、その20行を5行ずつとか、細かくして、
処理をさせると、全ての結合が、エラーも出ずに処理が出来る
ことが分かりました。
また、もう一つ分かったことが、20行とか30行で処理をさせよう
としてエラーが出たものに対して、行の挿入で、空白行を挿入し、
再度マクロをまわすと、問題無く処理が出来ることが分かりました
。(↓下のサンプルで言いますと、4行目と5行目の間とか、6行目と
7行目の間とか。)
1 日付 名前 県名 商品名 希望 その他
2 4/1 〇〇〇 愛媛 パソコン 自宅に 特になし
3 送付
4 希望
5 4/2 △△△ 島根 プリンタ 午前着 特になし
6 4/2 □□□ 大阪 スキャナ 午後着 特になし
7 4/3 ◎◎◎ 香川 メモリ 会社に 特になし
8 送付
9 希望
10 致します。
初心者のわたしが言うのもあれですが、βさんに教えて頂いたコー
ドは間違いなく、正しくて、わたしの元データあおかしいと思う
のですが、このような状態になってしまうのも、エラーデータの
一つなのでしょうか。
(教えて頂いた方法ではエラーは見つかりませんでした。)
お時間のございます時で構いませんので、宜しくお願い致します。
(Nomu) 2017/04/13(木) 23:46
|[A] |[B] |[C] |[D] |[E] |[F] [1] |日付 |名前 |県名|商品名 |希望 |その他 [2] |4月1日|〇〇〇|愛媛|パソコン|自宅に |特になし [3] | | | | |送付 | [4] | | | | |希望 | [5] | | | | |しますが | [6] | | | | |だめなら | [7] | | | | |会社に | [8] | | | | |送って | [9] | | | | |ください。 | [10]| | | | |その | [11]| | | | |場合は | [12]| | | | |宛先に | [13]| | | | |経理部 | [14]| | | | |をいれて | [15]| | | | |ください。 | [16]| | | | |なお | [17]| | | | |パソコンは | [18]| | | | |クッション | [19]| | | | |などで | [20]| | | | |しっかり | [21]| | | | |梱包 | [22]| | | | |しておいて | [23]| | | | |ください。 | [24]| | | | |また | [25]| | | | |付属の | [26]| | | | |コードや | [27]| | | | |キーボード | [28]| | | | |等 | [29]| | | | |および | [30]| | | | |説明書 | [31]| | | | |などの | [32]| | | | |付属文書は | [33]| | | | |別梱包で | [34]| | | | |同時に | [35]| | | | |送って | [36]| | | | |ください。 | [37]| | | | |よろしく | [38]| | | | |お願い | [39]| | | | |いたします。| [40]| | | | |以上 |
こんなようなデータをいくつもセットして実行しましたが、こちらでは エラーなく処理されます。
★もっとも、上記データの場合、行の高さの制限があり、説明書 などの あたりまでしか表示されません。 (実際にセルの中には、もちろん、その下の文字も入っていますが)
以下のような制限があるようですね。(546ピクセルが最大)
http://www.koikikukan.com/archives/2014/05/28-013333.php
(β) 2017/04/14(金) 19:51
有り難うございます。
行の高さやピクセルですか…。なかなか難しいですね。
現状は、たくさんの行を取り込もうとして、「型が一致しません。」
エラーが出た場合、一行ずつ空白行を挿入→マクロを動かす。→
エラーが出なければ、次にいくと言う感じで、とにかく空白行を
挿入すれば、問題なく動く状態なので、なんでそうなってしまうのか?
空白行が必要な上下のセルの文字を確認したりして、原因を探そうと
思います。
(変な話ですが、結合を必要としない、1行の行の上下に空白列を挿入
すると、うまく動いたり…、きっと何か理由があると思うのですが、
難しいです。)
また、何かありましたら、ご相談をさせて頂きたいと思います。
本当に有り難うございます。
明日も、色々と試してみたいと思います。
(Nomu) 2017/04/16(日) 22:55
いつもお世話になります。
この件、色々と有り難うございました。
正直、いまだに上手くいっておりませんが、マクロの勉強をするには
良い機会だと考え、引き続き頑張りたいと思います。
そして、宜しければ、一つお伺いしたいのですが、以下のようなケー
スの場合も、「型が一致しません。」エラーが出てしまうのですが、
何が問題なのでしょうか?
実際、以下の6行のデータで試しましたが、エラーになり、途中に
空白行を挿入すると、問題無く動きました。
A B C D E F
1ケース番号 問合内容1 問合内容2 問合内容3 回答 その他
2CDO128732 料金を知りたい 納期確認 品質確認 グループホーム※ 特になし
2軒と3月末に※
1件完成予定※
3 現在も検討中
4CDO128909 納期を知りたい 料金確認 品質確認 ◎グレープフルーツ◎ 特になし
5 ■アップ提案出来なかった
6 ■不可理由。対象外の進捗確認
(→※の文字は、3つとも、E2セルに入っています。このサイトで上手く書けないので、分割して書きました。)
この様な形のフォーマット形式の場合は、教えて頂いたマクロは使えないのでしょうか。でも…、同じデータ利用頂いて、βさんの環境で、問題無い場合、何かこちらのパソコンの問題なのか?とかいろいろと気になります。
お時間の良い時で構わないので、ご確認頂けますと、幸いです。
(nomu) 2017/04/23(日) 22:20
もしかして、エラーになっていたのは、今回アップされたようなデータでしたか??
そりゃぁ、エラーになります。 マクロが想定していない形式のデータですから。
もっとも、マクロが想定していないデータがあれば、エラーではなく、メッセージを出して処理打ち切りぐらい 手当てすべきでしたかね。 そういう意味では手を抜いています。
今までの説明で、E列のセルが、セル内改行になっている ということは聞かされていなかったので。
( β) 2017/04/23(日) 22:32
まぁ、気を取り直して。
Sub Sample2() Dim r As Range Dim a As Range Dim c As Range
On Error Resume Next Set r = Range("A1").CurrentRegion.Columns(1).SpecialCells(xlCellTypeBlanks) On Error GoTo 0
If r Is Nothing Then Exit Sub
For Each a In r.Areas With a.Cells(1).Offset(-1, 4) For Each c In a.Offset(, 4) .Value = .Value & vbLf & c.Value Next End With Next
r.EntireRow.Delete
End Sub
( β) 2017/04/24(月) 00:58
お礼が遅くなりまして、申し訳ありませんでした。
ご質問をさせて頂きました件、無事に解決しました。
本当に色々と有り難うございました。
(Nomu) 2017/05/21(日) 12:11
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.