どうしても画像添付がうまくいかないので再投稿です。
申し訳ありません。

http://proxy.f1.ymdb.yahoofs.jp/users/4d3fb8ed_1 …

上記はヤフーフォトのリンクです。

茶色のセルは文字
青色のセルは空セル
B列の茶セルから次の茶セルまでにある青セルと茶セルをそれぞれ結合したいのですが、
量が多くできればエクセル側で一気に編集したいのですが方法ありますでしょうか?
知っている方いらっしゃいましたらやり方を教えてください。
説明下手ですいません。
宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

マクロでないと無理ですね。


以下サンプルです。

Sub ブランクセル結合()
 Dim I         As Long
 Dim 結合開始セル As Range
 Set 結合開始セル = Range("B1")
 For I = 2 To Cells(Rows.Count, "A").End(xlUp).Row
   If Cells(I, "B") <> "" Then
     Range(結合開始セル, Cells(I - 1, "B")).Merge
     Set 結合開始セル = Cells(I, "B")
   End If
 Next I
 Range(結合開始セル, Cells(I - 1, "B")).Merge
End Sub
    • good
    • 1
この回答へのお礼

おお!できました!
ご丁寧にありがとうございます!
これでリスト化の作業が格段に楽になりました!

お礼日時:2011/04/24 00:17

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで、空白のセルを無視して連結する方法を教えてください!

エクセル2002を使っております。

  A B C D        
1 あ い う え    
2   お   か   
3 か   き く    

と文字が入ったセルがあるときに

  A B C D       E 
1 あ い う え      あいうえ 
2   お   か      おか
3 か   き く      かきく

このようにE列のセルに空白を入れずに連結したいのです。
E2で、=A2&B2&C2&D2
といれて連結させると、

  A B C D       E 
1 あ い う え      あいうえ 
2   お   か       お か
3 か   き く      か きく

となってしまい困っています。どなたかよい方法をご存知でしたら教えてください。よろしくお願いいたします。

Aベストアンサー

そのセルは空白ではなくスペースが入っているようですね。
crtl+Fでそのスペースを何も無い状態(空白セル)に置き換えてしまえばよいのでは?
で、求めているものが得られるでしょうか???

QExcel VBA - 空白の結合

以下のようなExcelのシートがあります。
A2からC7を選択した後、マクロを走らせて空白セルを結合したいです。

  A B C
1 (空白) DDD (空白)
2 ABC 123 (空白)
3 (空白)(空白)(空白)
4 DEF GHI DEF
5 (空白)(空白)(空白)
6 (空白) 789 123
7 (空白)(空白)(空白)
8 GHI JKL MNO

A3はA2と結合、A5,6,7はA4と結合、B列、C列も同様です。
要は、空白セルを上にある値の入ったセルと結合したいのです。
ただ、C2が選択範囲外のC1と結合すると困るので、先頭行の空白は、上の選択範囲外セルと結合しないようにしたいです。C2とC3は、結合しませんが、結合する仕様でも問題ありません。

(A2と同じ値をA3に入れた方がいいという意見があると思いますが、会社の表なので結合しないといけません。)

※以前、似たような質問をしましたが、少し違います。(これは未解決です。)

Aベストアンサー

[回答番号:No.3] の DOUGLAS_ です。
 失礼いたしました。問題をよく読んでおりませんでした。

>A2からC7を選択した後
でしたね。

Sub Macro2()
 Dim R As Range
 For Each R In Selection
  If R.Value = "" And R.Row <> Selection.Row Then _
  R.Offset(-1).Resize(2).Merge
 Next
End Sub

Qエクセルで0表示以外のセルの文字列を結合する方法

エクセル(2003)で文字列の結合を「&」や「CONCATENATE関数」を使っておこなっていますが、文字列の空白または0表示の箇所のセルがあると「文字列000文字列00」のように「0」が表示されてしまいます。IF関数を併用してやっても「0」が表示されます。どのようにしたら「文字列 文字列」のように0表示なしで結合できるでしょうか。教えて下さい。現在、約180のセルにある文字列を1つに結合しようとしています。そのうちの結合文字列は多くて20ぐらいです。また、各セルの文字列はVLOOKUP関数により返しています。よろしくお願いします。

Aベストアンサー

一旦、「0」も含めた文字列を作り、「0」のみ消してはどうでしょうか。

具体的な方法としては、SUBSTITUTE関数を使用します。

=SUBSTITUTE(文字列,検索文字列,置換文字列)

例としては =SUBSTITUTE("文字列000文字列00","0","")
のようになります。
もちろん、具体的な文字の変わりにセルの結合でも可能です。

QExcel - 空白の結合

以下のようなExcelのシートがあります。

  A B C
1 ABC 123 DEF
2
3 456
4 DEF GHI
5
6 GHI 789 123

空白セルを結合したいです。
A1は、A2, A3と結合、A4はA5と結合、B列、C列も同じです。
要は、空白セルを上にある値の入ったセルと結合したいのです。
実際は、かなり大きな表なので、単純に結合していくのはNGです。

(A1と同じ値をA2, A3に入れた方がいいという意見があると思いますが、会社の表なので結合しないといけません。)

Aベストアンサー

マクロのサンプル
Sub test1()
  Dim rr As Range
  Dim rb As Range
  Set rr = Range("A1:C6")
  For Each rb In rr.SpecialCells(xlCellTypeBlanks)
    Range(rb.Address, rb.Offset(-1).Address).Merge
  Next rb
End Sub

Q文字列の結合、改行、空白削除

複数のセルを参照して文字列を結合し、2つずつでCHAR(10)で改行し、未入力のセルの空白を削除する方法はありませんか?

=SUBSTITUTE(TRIM(A1&" "&B1&CHAR(10)&A2&" "&B2&CHAR(10)&A3&" "&B3&CHAR(10)
&A4&" "&B4&CHAR(10)&A5&" "&B5),"","")

現在、上記のような数式を入れて一つのセルに表示させています。

しかし、これだと後半のセルが未入力の場合、空白で表示されるため、表示させるセルの中で結合した文字列が上の方に行ってしまいます。
表示させるセルは縦横共に中央揃えにしたいのですが、何かいい方法はありませんか?

まだまだ初心者ですが、いろいろ調べた結果、とりあえず上記の式にたどり着きました。


マクロではなく関数でなんとかなればと考えております。

分かりにくい文章になってしまったかもしれませんが、よろしくお願いします。

Aベストアンサー

>いろいろ調べた結果、とりあえず上記の式にたどり着きました。
あと一歩で完成です。
提示の数式の誤りはSUBSTITUTE関数の検索文字列が""で置換文字列が""となっているので実質では何も処理されていません。
また、TRIM関数の位置が無意味な状態です。
=TRIM(SUBSTITUTE(A1&" "&B1&CHAR(10)&A2&" "&B2&CHAR(10)&A3&" "&B3&CHAR(10)
&A4&" "&B4&CHAR(10)&A5&" "&B5,CHAR(10)&" ",""))
A1:B5のセルで空欄があったときにCHAR(10)&" "が余分な文字列になりますので、この2文字を""に置き換えます。
その結果で末尾に" "が残る場合がありますので、それをTRIM関数で除きます。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

QExcelで複数セルからの文字の結合

A1~A20までのセルにそれぞれ文字が入っています。
=A1&A2&A3&…&A20
で、A1~A20までの内容を結合できると思います。
これ以外で、もっと簡単な式で同じ結果を出す方法は無いでしょうか?

Aベストアンサー

こんにちは。

>もっと簡単な式で同じ結果を出す方法は無いでしょうか?

「&」演算子を使う以外には、基本的にはないと思います。

領域を統合するという関数は、ワークシートには用意されていません。名前は、たぶん、JOINという名が付けられるはずですが、それは未だ採用されていません。

Concatenate関数は、別にExcel用にあるのではなく、他機種が、「&」演算子が使えないためにあるだけに過ぎません。

そこで、myJoin というユーザー定義関数を考えてみました。

設定の仕方
Alt +  F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。
次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、このコードを貼り付けて、再び、Alt + F11 で、画面を閉じます。

ただし、登録したブックのみの有効です。

'<標準モジュール>
Function myJoin(範囲 As Range, Optional 区切り文字 As String) As Variant
Dim c As Range, buf As String
  If 範囲.Rows.Count = 1 Or 範囲.Columns.Count = 1 Then
   For Each c In 範囲
     buf = buf & 区切り文字 & c.Value
   Next c
   If 区切り文字 <> "" Then
     myJoin = Mid$(buf, 2)
     Else
     myJoin = buf
   End If
   Else
   myJoin = CVErr(xlErrRef) 'エラー値
  End If
End Function

使い方:

=MYJOIN(A1:A20)

=MYJOIN(A1:A20,",")
とすると、「,」区切りで出てきます。

必ず、縦1列か横1行の範囲を指定してください。
どちらか一方が2列か2行以上の場合は、エラーが出ます。

汎用的にどこにでも使いたい場合は、アドイン化しなければなりません。マクロが少し分る方の、Public ステートメントをつけるというのは良くある誤解です。

こんにちは。

>もっと簡単な式で同じ結果を出す方法は無いでしょうか?

「&」演算子を使う以外には、基本的にはないと思います。

領域を統合するという関数は、ワークシートには用意されていません。名前は、たぶん、JOINという名が付けられるはずですが、それは未だ採用されていません。

Concatenate関数は、別にExcel用にあるのではなく、他機種が、「&」演算子が使えないためにあるだけに過ぎません。

そこで、myJoin というユーザー定義関数を考えてみました。

設定の仕方
Alt +  F11 ...続きを読む

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

Qエクセルで多数のシートをまとめる方法

エクセルで10以上あるシートを一発でひとつにまとめる方法はあるでしょうか?

コピー&ペーストを繰り返すしかないのでしょうか…

仕事で明日やらなければならないので、
お分かりになる方、是非教えてください!

Aベストアンサー

まぁ既出回答にもあるように,10数回程度コピー貼り付けすることで,どうという作業ではないとは思います。

さておき。
ご利用のエクセルのバージョンが不明ですが,ご利用のOfficeのバージョンによっては

1.ワードを起動する
2.挿入のファイルからエクセルブックを指定する
3.添付図のようなダイアログが表示されたらラッキー成功です,ブック全体を指定して挿入する
4.Ctrl+Aで全体を選び,コピーして,エクセルの新しいシートに貼り付ける

と一発でできます。
添付図のようにならなかったときは,出来ません。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報