• ベストアンサー

エクセル2002を使用した住所録で、一グループごとにセルを追加する方法

エクセル2002で、住所録を作成しています。 A列のみに入力されており、上から 氏名、 住所、 電話番号、 FAX番号、 Eメールアドレス、 の順に並んでいます。 基本的に一人当たり5行です。 氏名の文字だけ赤色、それ以外の文字は黒色になっています。 ファックス、またはEメールアドレスを持っていない人もいるので、所有していない場合はつめて表示されています。 例えば AさんはファックスとEメールアドレスを、 BさんはEメールアドレスを持っていない場合は、 上から順に、 Aさんの氏名、 Aさんの住所、 Aさんの電話番号、 Bさんの氏名、 Bさんの住所、 Bさんの電話番号、 BさんのFAX番号、と表示されています。 このように一人当たりの行数が3行になったり4行になったりしています。 一人一人の最後の行のすぐ下に、次の人の氏名がきており、対象となっている人が変わっても、空白セルが挿入されることはなくA列にびっしりと入力されています。 この場合、 一人当たりの行数を6行以上にして、 一人当たりの行数が6行に足りない場合はその分だけ空白セルを追加する方法があれば教えてください。

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

  • ベストアンサー
回答No.2

自動では難しいと思います。 たぶん、1行目を氏名、2行目を住所、3行目を電話番号 4行目をFAX番号、5行目をメールアドレス、6行目を空白の固定グループにした後、別のフォーマットへコピーするつもりなのでは?と思います。 今回のフォーマットは以降使うことは無いでしょうから 私なら条件付書式で6行ごとにセルに色をつけてそこに氏名が来るようにコツコツ行挿入していきます。 条件付書式の設定は 1.A列全体を選びます(Aをクリック) 2.メニューの「書式」→「条件付書式」を選びます 3.条件付書式の設定で「セルの値が」を「数式が」に変更 4.横の枠内に =MOD(ROW(),6)=1 を入力 5.「書式」をクリックし、「パターン」タブを選び、好きな色を選択して「OK」をクリック 6.これで常に1、7、13、19・・・と6行おきに色がつきます。(行の挿入削除しても変わりません) つぎは色と氏名が重なるように適当な行を選んで行挿入を行なって行きます。 補足:直前の作業を覚えているF4キーについて 通常、行挿入は挿入したい下の行を選んで右クリックで 行挿入しますよね。 1回行挿入すれば、次回からF4キーで繰り返すことが出来るので、行を選んでF4キーという具合に効率よく作業することができます。

kamenn
質問者

お礼

アドバイスをありがとうございます。 「書式」→「条件付書式」とたどる方法とF4キーで、かなり効率的に作業をこなせるようになりました。 お蔭様で、扱えるデーターが増えました。

その他の回答 (2)

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.3

VBAです B列に、新たに作成します 氏名~電話番号の位置は決め打ちしていますので、ズレルとうまく動きません(^_^;) --------------------- Sub TEST() ' Agyou = 1: Bgyou = 1 Do For i = 0 To 2 Cells(Bgyou + i, 2) = Cells(Agyou + i, 1) If i = 0 Then Cells(Bgyou, 2).Font.ColorIndex = 3 End If Next Agyou = Agyou + 3: Bgyou = Bgyou + 3 If Cells(Agyou, 1).Font.ColorIndex = 3 Then '名前 For i = 0 To 1 Cells(Bgyou + i, 2) = "" Next Bgyou = Bgyou + 2 Else If InStr(1, Cells(Agyou, 1), "@") Then 'メール Cells(Bgyou, 2) = "" Bgyou = Bgyou + 1 Cells(Bgyou, 2) = Cells(Agyou, 1) Agyou = Agyou + 1: Bgyou = Bgyou + 1 Else 'FAX Cells(Bgyou, 2) = Cells(Agyou, 1) Agyou = Agyou + 1: Bgyou = Bgyou + 1 If InStr(1, Cells(Agyou, 1), "@") Then 'メール Cells(Bgyou, 2) = Cells(Agyou, 1) Agyou = Agyou + 1: Bgyou = Bgyou + 1 Else Cells(Bgyou, 2) = "" Bgyou = Bgyou + 1 End If End If End If Cells(Bgyou, 2) = "" Bgyou = Bgyou + 1 Loop While Cells(Agyou + 1, 1) <> "" End Sub

kamenn
質問者

お礼

わざわざVBAを作成してくださり、ありがとうございます。 完全ではありませんが、8割はきちんと順番どおりに並んでくれます。 後の2割は手作業でこなせます。 お蔭様で、効率よく作業できます。

  • redowl
  • ベストアンサー率43% (2140/4926)
回答No.1

>A列のみに入力 縦一列にデータを入力されている・・・・ B列以降は、空欄?それとも他に、データを入力している? 何か特別な理由があって、このような形式にしている・・・・・ と考えていたのですが A列に、異種データが混在するのは・・・・お勧めしません。 個人の項目が増えた時に、行を増やす手間は・・・・行挿入が必要・・・・・(閉口) このことを考えると、一個人データは1行に収める。項目を増やしたい時は、空白列を追加するだけ・・・の方が簡単です。 下記サイトで、サンプル住所録がダウンロード出来ますが、 これを見ていただくとお判りいただけるかなと・・・ http://pc.nikkeibp.co.jp/pc21/sample/200506/toku3.shtml データの見やすさ、検索、並べ替え、・・・ のことを考えると、このような形式が一般的だと思いますが、・・・・決してこれを、強制する意図はありません。

kamenn
質問者

補足

B列以降は、空欄?それとも他に、データを入力している? ↓   ↓   ↓ B列以降は、空欄になっています。 何か特別な理由があって、このような形式にしている ↓   ↓   ↓ 特別な理由はありません。 既に、データーがA列だけに入力されてしまっています。 これからは別の入力方法で行いますが、既に入力されてしまったデーターを処理したいと思って、質問しているしだいです。 アドバイスをありがとうございました。

関連するQ&A