dポイントプレゼントキャンペーン実施中!

「ラベルマイティ2・ビジネス編」というラベル印刷ソフトで宛名ラベルに印刷を予定しています。差込用データとして、Excelの名簿データを使用します。
しかし印刷指定が特殊で、宛先Aは10枚、宛先Bは20枚というように、1つの宛先ごとに異なった枚数のラベルを印刷する必要があり、しかもラベル用紙(A4サイズ24面)を無駄なく使いたいのです。
ラベルマイティには宛先ごとに枚数を指定する機能がないので、やむなくExcelのデータを加工しなければいけなくなりました。苦し紛れに考えた方法は下記のとおりです。

1.宛先Aが1行目、宛先Bが2行目、宛先Cが3行目…と続いているとする。

2.宛先Aは10枚印刷なので、1行目をコピーして、2行目以下に9行挿入して、計10行にする。同様に宛先Bは20枚印刷なので、行をコピーして19行挿入する。以下、宛先Cも同様に…。

という繰り返し作業なのですが、宛先が千件近くあるので、手作業ではあまりにも時間がかかりすぎて、困っています。関数やマクロの機能でなんとかできるものでしょうか?それとも、もっと良い方法はありますでしょうか?ちなみに当方のExcelの知識は、基本的な関数程度でマクロは未経験です。
どうぞ宜しくお願い致します。m(__)m

A 回答 (7件)

>特に5番の操作のご説明が・・・


申し訳ありません。自分で書いて5番の操作を見間違えました。
コピーしたデータのすべてが内側に収まる四角形の領域を選択します。たとえば白紙のシートのA1に1、B2に2、C3に3を入力してください。A1を選択した状態で「編集」から「ジャンプ」を選択し「セル選択」をクリックし、「アクティブセルの領域」を選びOKします。すると、A1からC3までを囲む四角形の領域が選択されます。これと同じことを行います。
宛名データをコピーした場合、これに類似のアクティブセルの領域内に、まだ式が含まれています(つまり「=↑」)。これをたとえば電話番号等の「値」に変換しなければなりません。そこで、アクティブセルの領域を選択して、編集>形式を選択して貼り付け>値>OKを行います。
例:
A1に1、B1に2、C1に「=A1+B1」を入力します(鈎カッコなしの式)。
A2に2、B2に3を入力し、C1をコピーしてそのままC2に貼り付けます。5が現れるはずです。
次に、C2に、編集>形式を選択して貼り付け>値>OKを行います。3になるはずです。これはC1の「値」です。
    • good
    • 0

その2


>特に5番の操作のご説明が・・・
これは、No3の11から13までに記載している内容です。「=↑」は「直上のセルの内容を参照」という式です。これによって、番号1の宛先データが番号1.002(つまり2行目)、1.003(つまり3行目)・・・とコピーされます。control+enterは、「選択されているすべてのセルに同じ式を入力する」という操作です。

ダミーデータについて:
たぶんこれもわからないと思います。たとえば最初のデータに電話番号があり、2番目のデータに電話番号が入力されていないと、「直上のセルの内容を参照」によって2番目のデータに最初のデータに電話番号がコピーされてしまいます。そこで、ほかで使用されていない値をあらかじめ空欄に入力しておき、最後に空欄に戻すという作業です。空欄(セル)の選択方法は、No3の11から13までに同じですが、「=↑」に代えて「$$$$」という値を用いています(それが使用されている場合には別のものを使います)。

わからないところは、逐次質問してください。5個ぐらいのデータを仮に作成してテストするとわかってきます。
    • good
    • 0

その1


>例えばセルB1からB11までオートフィルする、ということでしょうか?
まず、縦の並びを列、横の並びを行と言います。
Excelにある宛先データはおそらく縦に異なる宛先が並び、横にその宛先の属性(住所、電話番号等)が並んでいると考えられます。そこで、Aの列に1列挿入し、開始1、増分1の連続番号を振ります。このA列だけを白紙のシートのA列にコピーします。ここで、たとえば1番の宛先のラベルが10枚必要であるとします。その場合、番号1と2の間(縦)は隣接しているため、横にB1からK1まで増分0.001でオートフィルします(この増分は999枚までのコピーを想定)。J1まででもよいのですが、全枚数-1の計算をしなくて済むようにしました。A2以降についても同様にします。
このように処理したものは、縦横の配列になっています。それを縦並びに変換しなければなりません。ここで、たとえば最も多いラベルの枚数を30枚と仮定します。C列からAE列までを選択してコピーし、ワードに「テキストのみ」で貼り付けます。続いてタブを改行に一括変換します。その場合、10枚のものの次には改行が20個並ぶことになるので、2つ以上(2を含みます)の改行を1つに変換します。
    • good
    • 0
この回答へのお礼

お礼が遅くなりまして大変失礼いたしました。
なんとか解決いたしました。
誠にありがとうございました。

お礼日時:2006/01/17 16:51

No3です。

友人から操作だけではわかりにくいとの指摘を受けてしまいましたので、全体を簡単に説明します。
ここでは、「各入力済み行の下にそれぞれの行をコピーする数の空白行を作成し、直上のセルをコピーする」という結果を求めており、質問者さんが試みようとしていることとほぼ同じです。
つまり「1行目をコピーして、2行目以下に9行挿入して」に相当する作業として、各入力済み行に自然数の連番を振り、それぞれの行をコピーする数(全数-1)だけ、対応する自然数を整数部とする小数を索引番号とする空白行を作成し、全体をソートすることによって、番号1の行(=入力済みの第1行)、番号1.002の行(=2列目以降が空白)、番号1.003の行(=2列目以降が空白)、...番号1.01の行(=2列目以降が空白)、番号2の行(=入力済みの第2行)、2.002(=2列目以降が空白)、...というシートを作成しています。
個別の作業の説明:
1. 行方向に「入力済み行に自然数」を配置した場合に行だけで処理しようとすると行の間の挿入となるため、横に伸ばしてフィル(増分0.001)で行います(増分は適宜選択します)。
2. 第1列は「入力済みの行の自然数」、第2列は「全数-1」に相当するため、第3列から終わりまでを使用します(第3列以降の入力したデータがすべて入る「四角形領域」、つまりアクティブセルの領域を選択してコピー)。
3. テキストにすると、横方向はタブ、縦方向は改行となるので、すべてのタブを改行に置換して列データに変換します(Wordを使用)。このとき「四角形領域」内には空白セルも含まれているため、改行が2つ以上続く部分ができるのでそれを除去します。
4. これらを自然数の連番に続けて貼り付け、アクティブセルの領域を昇順に並べ替えると、上記の結果が得られます。
5. 最後に必要とするデータがすべて入る「四角形領域」(アクティブセルの領域)を選択して空白セルを選択し、「直上のセルを参照する式」をすべてに入力します。これらはまだ「式」の状態なので、一度コピーし、「値」としてペーストして全体を「値」にします。
なお、各入力済みデータに空白フィールド(行内の空白セル)を含む場合には、最初にダミーデータ(たとえば$$$$)を入力しておき、最後に一括置換を用いて削除するとよいでしょう(直上のセルの参照で直前のレコードのセルを参照してしまうエラーを防止)。ダミーデータの入力方法は、上記の(5)および昨日の(11)(12)に同じです。
1000件程度のデータなら30分もあれば処理できると思います(処理後の行数が10000を超えることが予想される場合には複数に分割した方がよいでしょう)。
    • good
    • 0
この回答へのお礼

丁寧なご説明ありがとうございます。
しかし、またもや当方の理解不足で実際に試そうと思ってもよく分かりませんでした。
特に5番の操作のご説明が・・・
折角のアドバイスを申し訳ございません。

お礼日時:2006/01/10 17:07

マクロを組むと簡単なのですが、マクロや関数がわからなくてもできる方法を紹介します(ラベルマイティの機能については存じ上げていません)。


1. すべてのレコード(宛先データ)を選択してコピーし、新しいブックのシートに貼り付けます。
2. (1)のシートの先頭に1列追加し、1から連番を振ります。名前を付けて保存します(オリジナルに手を加えずに作業するため)。
3. 列1をコピーし、新しいブックのシートに貼り付けます。
4. それぞれの番号は、レコード番号に対応するので、たとえば行1であれば、番号1が入っています。たとえば、番号1のレコードを10枚プリントする場合には、行1の列2に1.001と入力し、1.01になるまで行方向にフィルします。番号2以下も同様に行います。
5. フィルが済んだら、小数点以下が0.002の列(この場合は列3)から最も右に数値の入っている列まで選択してコピーします。
6. Wordを開き「形式を選択してペースト」を選び「テキスト」をコピーします。
8. 置換を選択してタブ(^t)を改行(^p)に全置換します(オプションで「あいまい」を外す必要があります)。^p^pを^pに置換する全置換を該当なしとなるまで繰り返します(2以上の改行の削除)。
9. 2以上の改行がなくなったら、全体を選択してコピーし、(2)のシートの第1列の一番下にペーストします。
10. 全体を選んで昇順でソートします。
11. 全体が選ばれている状態で「編集」から「ジャンプ」を選択します。
12. 「セル選択」をクリックし、「空白セル」を選びOKします。
13. イコールと上矢印を入力し、control+enterを行います。1列目を削除します。全体をコピーして「値」でペーストします。
以上です。
くれぐれも作業用のコピーを使用することをお忘れなく。少ないデータで試してから行うとよいでしょう。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
折角のアドバイスなのですが、実際に試したところ、
当方の知識不足で以下のご説明がよく分かりませんでした。
「行1の列2に1.001と入力し、1.01になるまで行方向にフィルします。番号2以下も同様に行います。」→例えばセルB1からB11までオートフィルする、ということでしょうか?

お礼日時:2006/01/10 17:00

#1の回答をしたものです。


すみません、要件と少々違ってたようですね。
申し訳ありませんでした。
    • good
    • 0

こんなのがありましたが。

。。

参考URL:http://www.vector.co.jp/soft/win95/writing/se210 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/01/10 16:52

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