• 締切済み

エクセルのマクロ(繰り返しについて)

複数のセルの統合をしています。 目的:各セル内の文字を一つのセルに統合したいのです。 この作業をかなりたくさんせねばなりません。 現状行っていることは (1)A1~A10まで、各セル改行ありで統合してます。 式にすると(A1&CHASE(10)&A2......)というような感じです。 この一連の統合作業を100以上行わねばなりません。 しかも、統合せねばならないセル数が上記のように(A1~A10)10個のセルとは限りません。 A11~A16のセルの統合もあれば、A16~A30のセルの統合もあります。 これをどうにか、マクロを使用して行いたいのですが、 どのようにすればセルの統合がスムーズにいきますでしょうか? ちなみに、統合したいセルの和はkkkkkのいう文字が入っている、セルの直前までです。 つまり・・・ A1 A2 A3 A4(kkkkkk)→A3までを統合 ・ ・ ・ A5 A6 A7 A8 A9 A10(kkkkkk)→A9までを統合。 色々と検索してみたのですが、良い方法が見つかりません。 ひたすら、数式を打ち込むしかないのでしょうか? どなたかお知恵をお貸しください(T_T) よろしくお願いいたします。

みんなの回答

回答No.6

ああ、すみません。No.3 ですが、ケアレスミスしましたね。すみません。No.3 の B2 の数式を次の 2 行の数式に差し替えてください。 B2 =if(a1="kkkkkk",a2,b1&" "&a2) なおご存じとは思いますが、セルの書式を「折り返して全体を表示する」に設定しないと表示上は改行されませんので、ご注意。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

実際のデータの配置や作業の目的が不明なので、最も効率的な操作が異なりますが、A列に連続して入力されているデータで特定の文字「kkkkk」までの文字をセル内改行を使って連結したいということなら以下のような文字の割り付けの機能を用いる方法で一括して実行できます。 B1セルに「=IF(A1="kkkkk","",A1&CHAR(10))」と入力して下方向にオートフィルコピーします。 その選択状態のまま、右クリックして「コピー」、もう一度右クリックして「形式を選択して貼り付け」で「値」にし、そのまま、「データ」「区切り位置」で「完了」します。 そのまま、Ctrl+Shift+→キーのショートカット操作でB列から最終列まで選択し、最後に「編集」「フィル」「文字の割り付け」をし(2007以降のバージョンならホームタブの「編集」の中の下矢印アイコンをクリックして「両端揃え」を選択してください)、最後にもう一度右クリックして「セルの書式設定」の配置タブで「折り返して全体を表示する」を選択してみてください。 #マクロで対応する場合も含めて、このようなご質問では正確なシートのレイアウトや目的を具体的に提示されないと的確な回答が得られないと思います。 また、Officeソフトはバージョンによって使用できる機能や操作方法が大きく異なりますので、質問の際には必ずバージョンを明記するようにしましょう。

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.4

言いたい事はいくつかありますが・・・ Sub sample() Dim myStr As String Dim i As Long, j As Long     With Columns(2)         .ClearContents         .MergeCells = False     End With     j = 1: myStr = ""     For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row         If Cells(i, 1) = "kkkkkk" Then             With Range(Cells(j, 2), Cells(i - 1, 2))                 .WrapText = True                 .MergeCells = True             End With             Cells(j, 2) = Left(myStr, Len(myStr) - 1)             j = i + 1: myStr = ""         Else             myStr = myStr & Cells(i, 1) & vbLf         End If     Next End Sub こういうことでしょうか。 > 統合したいセルの和はkkkkkのいう文字が入っている、セルの直前までです。 これが可変で「jjjjjj」もありえる、なんていう場合は、 ここまでお三方が下さったご回答も「全て」無駄になってしまいます。 質問の際は「詳細を含めて」いただけないと、回答のしようが無いことをご考慮下さい。 回答に補足で「実は・・」「追加で・・」とやっていくと、本気でキリが無いですから。

回答No.3

>統合したものは、AのとなりのB列に示したいです! 何だかよく分からないので、具体的なことを説明してほしいのですが…。 もしかして、質問文にある「A4(kkkkkk)→A3までを統合」とは、「結合した文字列を B4 セルに記入し、セルの結合はどこにも施さない」という意味でしょうか?何となく今、そんな気がしてきました。そうであれば、もう回答が出ていますね。 ちなみに Excel において「統合」とは、重複しているデータの削除、合算などを行う機能のことで、ご質問の内容とは全く異なるものです。 マクロを使いたいとのことですが、できれば質問者さんが既に調べたこと、途中まででも書いてみたコードを載せていただきたかったです。何しろここは QA サイトであり、業務委託ではなく、質問をする場なので…。 なお、セルに B1 =a1 B2 =if(a1="kkkkkk",a2,b1&a2) C2 =a1="kkkkkk"   あるいは   =0+(a1="kkkkkk") と記入して B2 と C1 からそれぞれ下方向にオートフィルし、値複写で数式を除き、オートフィルタで「kkkkkk」でない行を抽出し、関係ない行をクリアすれば、お望みの結果は Excel の一般機能だけでサッとできてしまいます。たくさん繰り返す予定でもない限りマクロを使うまでもありませんので、ご参考に。

  • emaxemax
  • ベストアンサー率35% (43/121)
回答No.2

No1の方の回答はkkkkの右のB列に統合した文字データを表示する方法ですね。 では、わたしはそうではなくA列自体のセル自体を結合させ、そこに統合した文字データを表示する方法をやってみました。 Sub test01()   Dim n As Long   Dim Rng As Range, myC As Range   Dim myStr As String   For n = 1 To Cells(Rows.Count, "A").End(xlUp).Row     If Cells(n, "A").Value <> "kkkkkk" Then       If Rng Is Nothing Then         Set Rng = Cells(n, "A")       Else         Set Rng = Union(Rng, Cells(n, "A"))       End If     Else       If Not Rng Is Nothing Then         For Each myC In Rng           myStr = IIf(myStr = "", myC.Value, myStr & Chr(10) & myC.Value)         Next myC         Application.DisplayAlerts = False         Rng.Merge         Application.DisplayAlerts = True         Rng.Value = myStr         myStr = ""         Set Rng = Nothing       End If     End If   Next n End Sub

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

文字列結合した結果を「どこに」表示したいのですか。 作成例: sub macro1()  dim buf as string  dim r as long  range("B:B").clearcontents ’上から下まで繰り返す  for r = 1 to range("A65536").end(xlup).row   if cells(r, "A") = "(kkkkk)" then   ’kkk行の処理    cells(r, "B") = mid(buf, 2)    cells(r, "B").wraptext = true    buf = ""   else   ’それ以外の処理    buf = buf & vblf & cells(r, "A").value   end if  next r end sub

kokorodone
質問者

補足

さっそくご回答ありがとうございます!統合したものは、AのとなりのB列に示したいです!

関連するQ&A

  • ExcelVBAのマクロを特定条件まで繰り返し。

    初めて質問させていただきます。 ExcelVBAで特定マクロを特定回数あるいは隣のセルが空欄になるまで実行させたいのですが、VBAの知識が乏しく判りません。例えば、セルB1~D1を選択してマクロAを実行し、セルA2が空欄で無ければ改行、セルB2~D2を選択してマクロAを実行、、、とセルAが「空欄」になるまで繰り返します。この作業を約1000行程度行わせるため、手作業では途方も無い時間を費やすことになります。 ご指導いただければ助かります。

  • エクセル マクロ

    エクセル マクロで、シート1のA1セルないの文字列(数式)をクリックボードにコピーするマクロを組みたいのですが、セルのコピーは出来るのですが、文字列のみコピーが出来ません。貼り付けは任意でするので必要ないです。 初心者で何もわかりません。よろしくお願いします。

  • エクセルのデータ入力をマクロで行う方法は?

    はじめまして。初めて質問させていただきます。 Excelで作業を行っていたのですが、マクロ(VBA?)で分からないことが出てきました。 Sheet1のQ6セルとQ7セルが結合されています。そこにはデータ(数式)が入力されています。 同様に、Q8とQ9、Q10とQ11・・・というように、データ(数式)が続いています。データ数は300個です。 他のシート(Sheet2)の A4セルから下に、先程のQ6セルのデータ A5セルにQ8のデータ・・・ というように書きたいのです。 これをマクロを組んで行うことは出来るのでしょうか? さらに、Sheet1で数式だったデータを文字列で保存できるとなお嬉しいです。 マクロ初心者ですいませんが、皆様のお知恵をお貸しください。よろしくお願いいたします。

  • 配列数式を用いたエクセルマクロの使い方

    セルA1に「=SUM((A1:A12=5)*(B1:B12=""A"")*C1:C12)」という風に数式を表示形式を文字列として入れておき、他のセルに、この計算結果を入れるたいのですが、マクロでどのようにすればいいか、ご存知のかたがいらっしゃいましたら教えてください。 ちなみに、使用したい数式(セルA1に入れているもの)は配列数式です。

  • Excelのマクロのことでお伺いします。

    Excelのマクロのことでお伺いします。 A134のセルを切り取ってA136に貼り付け A138のセルを切り取ってA138に貼り付け この作業をA300までやり続けたいのですが、どのようにマクロの設定をすればいいでしょうか

  • Excelマクロにて文字列連結

    現在Excelのマクロにて文字列の連結を行っているのですが、 繋いだ文字列を改行を付けて連結を行いたいです。 セルとセルの中の文字列を改行を付けて連結するにはどうしたらいいのでしょうか? 例 A1セル「あああ」 B1セル「いいい」 C1セル「あああ       いいい」 Worksheets(sheet1).Range("C1").Value = Worksheets(sheet1).Range("A1").Value + Worksheets(sheet1).Range("B1").Value をすると 「あああいいい」と1行で表示されてしまいます。     ↑ ここに改行を入れるにはどうしたらいいのでしょうか? 以上、宜しくお願いします。

  • EXCELのマクロで出来ますか?

    散布図で近似曲線グラフを作成しました。 この近似曲線の書式設定で[グラフに数式を表示する(E)]を選択すると、 グラフに y = ax2 + bx + c という数式が出ます。 この数式をマクロで計算することは出来ないのでしょうか? 例えば、[セルA1]にxを入力したら[グラフA]のyの値が[セルB1]に算出されるような 便利なマクロ組むことは出来ますか? 初心者で質問が下手ですみませんm(_ _)m

  • ワードで一連作業の繰り返し

    初心者です。 ワード2000で、以下のような一連の作業を繰り返す場合、簡単な方法があるようですが、教えて下さい。 文頭からスペースを置き、その行末に「→戻る」を入力、そして改行 この一連の作業です。 なにかマクロとか言うものをつかうようだ、ということまでは分かりましたが、その作成法が、ヘルプで見てもよく分かりません。 宜しくお願い致します。

  • エクセル 複数ファイルの一括セル入力

    同じフォーマットを用いた複数のエクセルファイル(約200~3000)の編集作業で、 例えば、全てのファイルについて A1のセルに同じテキスト、数式、または関数を一括で入力する方法を探しています。 マクロを使えばできることなのだということは解りましたが、 マクロ初心者なので自分で作ることまではいたることができませんでした。 もしこの一連の作業のマクロ、もしくはフリーウェアなどご存知でしたら ご教授いただけますと幸いです。 宜しくお願いいたします。

  • Excelのマクロ教えてください

    初めまして。 以下のようなマクロが欲しいのですが、知識不足のため、どうしたらよのかわからず困っております。 ウェブで色々と調べてやってみましたが、期待どおりの結果を得られませんでした。 どなたかお教えいただけたら幸いです。 行いたいのは、例えば、   セルA1に文字列『1. abc』が入っているとき、先頭の番号『1』の部分だけ取り出し   (または . 以下を除いて)、セルA1の内容を数字型の『1』に書き換える という動作です。 複数のセルをドラッグして選択し、マクロのショートカットで一発変換 できたら…と思っております。 変換したい部分のセルの内容はすべて、『1. abc』のように、文字列で 「1~7の数字」、「半角の.」、「半角スペース」、「英単語」 の順になっています。 簡単なことなのかもしれませんが、自分にはさっぱりでした… どなたか回答をお願いいたします。m(_ _)m

専門家に質問してみよう