• ベストアンサー

エクセルのセル、このような合体はできるか?

よろしくお願いします。 エクセルで下記のような合体はできるのでしょうか? A列          B列    佐藤         田中             池田 このデータのA列とB列を合体させて A列 (1)佐藤 (2)田中 (3)池田 という一つの行にしたいのですが、なにか 式を使ってできないでしょうか? 何十行も、テキストをコピーして貼り付け、ということをやっていると あまりにも時間がかかってしまい、うまくできないかと思いました。 知恵を貸してください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! VBAでの一例です。 データはA・B列のみだけだとして、両列とも1行目からデータがあるとしています。 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので、 ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long Dim buf As String Application.ScreenUpdating = False For j = 1 To 2 For i = 1 To Cells(Rows.Count, j).End(xlUp).Row buf = "" buf = Cells(i, j) Cells(Rows.Count, 3).End(xlUp).Offset(1).Select Selection = "(" & Selection.Row - 1 & ")" & buf Next i Next j Application.ScreenUpdating = True Cells(1, 3).Delete (xlUp) Columns("A:B").Delete Columns(1).AutoFit End Sub 'この行まで ※ 一旦マクロを実行すると元に戻せませんので、別Sheetにデータをコピーしてマクロを試してみてください。 参考になれば良いのですが・・・m(_ _)m

kimi1980
質問者

お礼

回答ありがとうございます。 VBAは難しそうですね。 勉強してみます。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

例えばA1セルやB1セルには項目名が有り(必ず入力してください)、A2セルから下方には佐藤などの文字列が入力されており、B2セルから下方には田中、池田などと入力されているとします。A列の文字列に対してその傘下にある文字列の行が幾つになっても対応できるようにするためには作業列を作って対応することがよいでしょう。 C2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2<>"",COUNTA(A$1:A1)+COUNTA(B$1:B1)-1,"") 合体させた文字列を例えばE2セルから下方に表示させるためには次の式をE2セルに入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>COUNTA(A:A)+COUNTA(B:B)-2,"",IF(COUNTIF(C:C,ROW(A1))=1,"(1)"&INDEX(A:A,MATCH(ROW(A1),C:C,0)),"("&ROW(A1)+3-MATCH(ROW(A1),C:C,1)-COUNT(C$1:INDEX(C:C,MATCH(ROW(A1),C:C,1)))&")"&INDEX(B:B,MATCH(ROW(A1),C:C,1)+ROW(A1)+1-MATCH(ROW(A1),C:C,1)-COUNT(C$1:INDEX(C:C,MATCH(ROW(A1),C:C,1)))))) 元の表がシート1に有るとしてシート2のA2セルから下表に表示させるのでしたら次の式をシート2のA2セルに入力して下方にオートフィルドラッグすればよいでしょう。 =IF(ROW(A1)>COUNTA(Sheet1!A:A)+COUNTA(Sheet1!B:B)-2,"",IF(COUNTIF(Sheet1!C:C,ROW(A1))=1,"(1)"&INDEX(Sheet1!A:A,MATCH(ROW(A1),Sheet1!C:C,0)),"("&ROW(A1)+3-MATCH(ROW(A1),Sheet1!C:C,1)-COUNT(C$1:INDEX(Sheet1!C:C,MATCH(ROW(A1),Sheet1!C:C,1)))&")"&INDEX(Sheet1!B:B,MATCH(ROW(A1),Sheet1!C:C,1)+ROW(A1)+1-MATCH(ROW(A1),Sheet1!C:C,1)-COUNT(Sheet1!C$1:INDEX(Sheet1!C:C,MATCH(ROW(A1),Sheet1!C:C,1))))))

kimi1980
質問者

お礼

回答ありがとうございます。 勉強します。

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

方法1:とりあえずご質問の直接の回答 目的のセルに ="(1)&A1&CHAR(10) & "(2)"&B1&CHAR(10) & "(3)"&B2 という式を入れて,折り返して全体を表示の書式設定をしておく 方法2:不特定数のA列全部と不特定数のB列全部をとにかく1つのセルに集める方法 A1からA6辺りまで何某か記入されている B1からB3辺りまで何某か記入されている C1に =IF(A1="","",TEXT(COUNTA($A$1:A1),"(0)")&A1&CHAR(10))&C2 と記入してC6までコピーする D1に =IF(B1="","",TEXT(COUNTA($B$1:B1)+COUNTA(A:A),"(0)")&B1&CHAR(10))&D2 と記入してD3までコピーする 目的のセルに =LEFT(C1&D1,LEN(C1&D1)-1) と記入して折り返して全体を表示の設定を付け,そのセルをコピー,その場で形式を選んで貼り付けの値にマークしてOKする

kimi1980
質問者

お礼

回答ありがとうございます。 勉強します。

関連するQ&A

  • エクセルの検索機能について

     エクセルの詳しい方に質問です。  まず下記のようなデータがあります。  A列  B列  安部  10  佐藤  20  佐藤  30  佐藤  25  田中  10  このデータをもとに下記のような表をつくりたく思っています。  A列  B列  C列  D列  安部  10  佐藤  20   30   25  田中  10 なお、A列はこちらで入力し、B列~D列に式を入力しておき自動計算するようにしたいのです。 わかる方のお力添えをよろしくお願いします。  

  • excel2003 2列のデータを1列に

    エクセル2003にて 下記のように2列のデータを1列に表示させたいと思っております。 A列  B列              C列 田中 佐藤              田中 鈴木 池田 このように>      鈴木 後藤 内藤              後藤                     佐藤                     池田                     内藤 C列に入れる数式をお教えください。 よろしくお願いします。

  • Excel セルを合体

    1500行程度のデータで、 G列に都道府県、H列に住所を分けて記入しています。 例:  G100     H100 東京都    江東区大島~~  ↑        ↑ この全行のGとHのセルを合体させたいのです。(H列を削除しても良い)  ↓ G100 東京都江東区大島~~ 合体させたいのですが、結合させるとH列が消えるし、関数では別セルになる・・・ =G100 & H100などの関数ではなく、(マクロも却下です)  合わせたデータをG列に「テキスト」として残したいのです。  エクセル内だけで出来ますか? 現在、 CSVやエディタでの置換えが出来るのかも考え中ですが、 ご教授お願いします。

  • excelで1人ずつ行の高い点数だけ抜きだしたい。

    excelで1人ずつ行の高い点数だけ抜きだすことはできますか。 例) A 列 B列 <=をつけている行が取り出したい行 田中  100 <= 田中  70 佐藤  80 <= 佐藤  70 佐藤  65  ;  ; 宜しくお願いします。

  • excelのソートと取り出し

    excelで複数をソートして高い点数だけ抜きだすことはできますか。 例) A 列 B列 <=をつけている行が取り出したい行 田中  70 佐藤  90  <= 田中  100 <= 佐藤  70  ;  ; 宜しくお願いします。

  • エクセルのデータ並べ替え(抽出)の方法

    エクセルのデータ並べ替え(抽出)の方法 を教えてください。 下記のようなデータがあるとします。   A    B    C   D 1 田中  東京  千葉  福岡 2 山田  京都  滋賀 3 佐藤  奈良  青森  USA 4 鈴木  カナダ 愛媛 A列は名前、B列以降は文字列です。B列以降はC列までの行、D列までの行とさまざまです。重複セルはありません。 これを下記のように並べ替えたいです。   A    B    C   D 1東京  田中 2千葉  田中 3福岡  田中 4京都  山田 5滋賀  山田 6奈良  佐藤 7青森  佐藤 8USA   佐藤 9カナダ 鈴木 10愛媛  鈴木 こういうことは可能でしょうか??? 教えてください。 よろしくお願いします。

  • Excelのセルの結合

    いつもお世話になっています。 エクセルのA列の文字列とB列の文字列を合体させる方法はありますか? 1000行くらいあるので コピーしていたら大変なのです。 例) A1のセルの文字列 あい B1のセルの文字列 うえお C1に あい うえおと表示させる。←これがやりたい できれば Aの文字とBの文字の間に半角スペースを入れたいのですが・・・。 よろしくお願いします。 

  • エクセル関数について

    下記のようなエクセルのデータを作りたいのですが、どのような関数を使えばいいかわかりません。 シート1           シート11           シート12            A    B         A    B            A    B  1  田中 500円    1 田中  500       1 田中  500 2               2 シート2    A    B         A   B             A    B  1  伊藤 300円     3 伊藤 300         2 伊藤  300 2  佐藤 400円     4 佐藤 400         3 佐藤  400 このようにシート1から10まで2行入力する欄を作ります その中から大事なデータだけを集計するため一度シート11に反映させます この時2行目が空欄の場合はシート11も空欄になっています。 そしてこのシート11から空白部分を除いて順番に並べるシート12を作りたいです。 シート11は=Sheet1!A1のように単純に反映ができるのかと思うのですが シート12へ空白を除いて反映させる方法がわかりません。 わかりづらい質問でも申し訳ありませんが  何卒よろしくお願い致します。  

  • エクセルで条件に一致したセルの隣のセルを取得したい

    下のような「得点」という名前のシートがあります。 (「田中」のセルがA1です。)  [ 田中 ][ 10 ][ 200 ]  [ 山田 ][ 21 ][ 150 ]  [ 佐藤 ][ 76 ][ 250 ]  [ 鈴木 ][ 53 ][ 350 ] 別のシートのA1セルに、「佐藤」と入力すると、  [ 佐藤 ] 「得点」シートから「佐藤」の列を見つけて、B1、C1に  [ 佐藤 ][ 76 ][ 250 ] のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。 「得点」シートでは氏名が重複する事はありません。 IF文を使うと思うのですが、いまいち良く分かりませんでした。 よろしくおねがい致します。

  • エクセルのデータのコピー(シート間)

    エクセルのデータのコピー(シート間) シート1の10行目には,A列からCZ列の各列ごとに1行目から9行目までの数値の加算式が入力されています(A10には「=SUM(A1:A9)」,B10には「=SUM(B1:B9)」,・・・CZ10には「=SUM(CZ1:CZ9)」)。 これらの加算式のデータ(A10,B10,・・・CZ10)を,シート2のA列の1行目から78行目まで縦にコピーしたいのですが,良い方法を教えて下さい。 宜しくお願いします。

専門家に質問してみよう