• 締切済み

Access VBAで複数行を1行にする方法

いつも参考にさせていただいています。 今回、新規の注文を受けることになり、データフォーマットを見せてもらったのですが、 ヘッダーと明細情報の1:Nになっていました。 これを1行づつにしたいのですが、明細行にヘッダー行とのキーになる項目がありません。 いろいろ試してみましたが、うまくいきませんでした、ご教授していただければ幸いです。 データ 項目1 項目2 項目3    項目4  項目5 1   会社名 送付先住所 担当者名 連絡先 2   品名  数量    備考 上記をこうしたいです。 項目1 項目2 項目3    項目4  項目5   項目6  項目7  項目8 1   会社名 送付先住所 担当者名 連絡先   品名   数量  備考  

みんなの回答

回答No.2

 普通は、DAOとかADODBなどで添付図のようなテーブル構造の二つのテーブルにインポートすると思います。もちろん、[発注台帳].[ID]、[発注明細].[発注台帳_ID]、[発注明細].[行番号]はVBAで生成する必要があります。[発注明細].[発注台帳_ID]+[発注明細].[行番号]は、複合キーとなります。また、[発注明細].[行番号]を列に設けない向きもありますが、それでは[発注明細]の並びを制御することはできません。 >Access VBAで複数行を1行にする方法  以上の全手続きを、ここで回答することはちょっと難しいと思いますよ。

kapa0919
質問者

お礼

f_a_007さん ありがとうございます。 私には、難しそうですね。(プロの方の考え方になるんですね。) 1回の注文は1、000件もなく、その都度クリアするので、単純に1と2を繋げれば よいと思っています。 別の方法を検討してみます。

kapa0919
質問者

補足

f_a_007さん 昨日1日考えて邪道かもしれませんが、項目1にヘッダー・明細の区分があるので、 項目1がヘッダー:1ならば、項目2の注文番号を取得し、次行に移動し項目5に 書き込むを最終行まで繰り返すで希望が叶いました。 ちなみにコードは  Dim rs As Recordset Dim add As String Set rs CurrentDb.OpenRecordset("テーブル名") Do Until rs.EOF If rs!項目1= 1 Then add = rs!項目2 rs.MoveNext rs.Edit rs.!項目5 = add rs.Update Else rs.Edit rs.!項目5 = add rs.Update EndIf rs.MoveNext loop rs.Close Set rs = Nothing

回答No.1

>Access VBAで複数行を1行にする方法 1、やり方は、幾らでもある。問題は、どこで躓いているのか? 2、その前に、なぜ?そんな無意味なことをするのか? >ヘッダーと明細情報の1:Nになっていました。 普通は、そのままにテーブルに反映するのでは?

kapa0919
質問者

補足

f_a_007さん レスありがとうございます。 説明不足ですみません。 f_a_007さんの疑問ですが、 1.やり方について 私の思いでは、1のヘッダー部と2の明細部に共通のキーがないので、 紐づけができないのでどうすればよいかと迷っています。 データにも不備がありましたが、1ヘッダー部には注文番号があります。 2明細部には注文番号はありません。 2.無意味なことについて 基幹システムの取り込み口が1行ごとで並びが違うのでその為の変換です。 言われています、「普通はそのままテーブルに反映」はテーブルの正規化と 言われているものだと思いますが、その為1のやり方に戻ると思うのですが 考え方がおかしいのでしょうか。 修正したデータ       項目1  項目2  項目3  項目4   項目5  項目6 ヘッダー部  1   注文番号 会社名 送付先住所 担当者名 連絡先 明細部    2   品名   数量  備考 ヘッダー部  1   注文番号 会社名 送付先住所 担当者名 連絡先 明細部    2   品名   数量  備考 明細部    2   品名   数量  備考 明細部    2   品名   数量  備考 明細部    2   品名   数量  備考

関連するQ&A

  • エクセルのデータ、1行を複数行に展開し直したいです。

    うまく説明できませんが、筆まめの住所録データをCSV形式にてエクセルに落とし込みました。 その状態では、宛名~備考までの項目が約20、A2~S2に1行に 展開されています。 住所録を社内で回覧できる状態にしたいのですが、今のままでは 項目が多すぎるため、1件について3行程度に項目を折りたたんで 展開したいです。  宛名|敬称|担当者|郵便番号|住所|番地|ビル名|備考    ↓    宛名 | 敬称 |担当者  郵便番号 | 住所 | 番地 | ビル名  備考  という風に。 別シートに「=sheet1!A2」「=sheet1!B2」というように配置し、 以下ドラックすると、データが2件飛ばしになってしまいます。 簡単に展開しなおせる方法を教えて下さい!! ずっと調べているのですが、一向に分からずに煮詰まってしまいました。

  • 1行名簿の複数行化について悩んでます

    現在、顧客リストをエクセルで作成しています。 年賀状印刷ソフトに取り込む関係上、 1顧客の情報を1行にまとめて記載しています。 ですが、リスト出力する場合、横に長すぎるので、 1顧客の情報を複数行にして出力したいのです。 現在のデータ構成は、 No./名刺有無/名前/フリガナ/会社名/会社名フリガナ/部署名/役職/〒/住所1/住所2/備考 が1行に収まっています。 これを、 別シート(出力用)に、4行に分けて参照表示したいのですが、 参照表示まではできたのですが、 コピーで増やすと、4行とばされた番号でコピーされます。 例) =原本!E4 → =原本!E8 ※求めているのは =原本!E5 です。 手作業で数式訂正するのはあまりに膨大で困っています。 なにかできたような気がするのですが、 検索に疲れてしまいここへ来ました。 逆の場合なら簡単なんですがねぇ(ーー;) よろしくお願いいたします。 言葉で表現するとわかりにくいかと思いますので、 ご不明な点はご質問ください。

  • EXCELでの印刷で2ページ以降にも1行目に入力されている文字列を印刷したい

    いつもお世話になっております。 Excelで住所録を管理しています。 1行目に「氏名」「郵便番号」「住所」「連絡先」「勤務先」などの項目名を書き、2行目以降に該当する項目を埋めていっています。 この住所録を印刷する際に2ページ以上に印刷されるのですが、2ページ以降にもそのページの先頭に1行目の「氏名」などの項目名が印刷されるようにしたいのですが、可能でしょうか。 印刷範囲が決まっているので、どの行が各ページの先頭に来るかは当然分かるのでその行に項目名を再度入力すれば印刷としては問題ないですが、住所録としての使い勝手が悪いと考えています。 ヘッダーに項目名を入力するという方法も考えたんですが、印刷の際に項目名とそれに対する値がずれるので、うまくできないのです。 バージョンは2000を使っていますが、それ以降のバージョンでも結構ですので、方法を教えて頂ければと思っています。 よろしくお願いいたします。

  • 複数行の差込印刷について

    Wordの差込印刷について教えて下さい。 Excelで下記のような表を作成しています。 つまり、品名などの項目が複数行にデータが入っている場合があります。 この表をWordのビジネス文書で「名前」は送り先、「品名」「金額」「備考」はあらかじめ作成してある表内に挿入したいのです。 これを1行1枚ではなく、複数行にわたってあっても1枚に収めるためにはどのようにすればよいでしょうか? 名前    品名    金額  備考    山田一郎  えんぴつ  100 ○○社製品       消しゴム   50 △△社製品 田中花子  A4ノート 150 ●●社製品       下敷き   250 □□社製品 岡本四郎  蛍光ペン  200 ∵∵社製品 鈴木太郎  ボールペン 250 ◇◇社製品       B5ノート 150 ▽▽社製品       電卓    900 ▲▲社製品 よろしくお願いいたします。

  • ACCESSで可能・・?6行6明細のレポート

    ヘッダー項目(得意先コード、伝票NOなど) に対して 詳細     |色番1|本数2| ・・・・ 色番6 本数6  品番1|    |    |・・・・・|    |    |  ・   ・ 品番6|    |    |・・・・・|    |    | 6行6明細の伝票を使っているのですが アクセスでCSVファイルをインポートして 伝票に近いものを作れないかと考えているのですが 難しいでしょうか?

  • Access2010で自動で空欄を入力する方法

    いつもお世話になっております。 パソコン(Windows7)でAccess2010を用いて販売管理システムを作りました。 納品書発行に置いて、明細行に、仮に3行分、データを入力した場合(品名、数量、単価、金額等)、 その次の行から、品名欄に7行分のスペース(空欄)を自動で入力したいと思います。 理由は、印刷をしたとき、10行分の納品書として、10行分、罫線が引かれる事が希望だからです。 現在は3行分のデータを入力すると、3行分の明細しか印刷されません。 どなたか方法をご存じの方がおられましたら、是非ご指導をお願い致します。

  • 入力したデータをその都度別のシートに蓄積したい。

    お世話になります。 分不相応なのですが、教えてください。 売上や支払に関する明細を作るためにエクセルを使っています。 『シート1』 罫線を引いて実際の明細仕立てにして、  社名   品名1・数量1・金額1・・・   品名2・数量2・金額2・・・          合計金額 計算式も入れて、品番と数量が入ると 金額を算出するようにしています。 『シート2』 1行目には、社名・品名などの項目名を入れました。 1つの取引先に付き、1行分で シート1で入力したデータを転記したいと思います。 理想としては、シート1で1明細の入力が完了 →コマンドボタン(登録)を押す →シート2の2行目にデータが転記 これを繰り返してシート2の3行目、4行目と データを蓄積していく・・・感じです。 マクロの記録で、入力した内容を消去するボタンを作ったり 1行目だけ内容を転記させてみたり(そこで終了・・) 色々なキーワードで、それらしきサイトを検索してみたり、 初心者でも分かるマクロ&VBAみたいな本で調べてみたり・・ ちょっと行き詰ってきたので質問させて頂きました。 ユーザーフォームを作ってシートに転記する方法は見つけましたが シート1には計算式を結構盛り込んでしまったので、 フォームには手が届きそうにありません。 説明不足かもしれませんが、何か良いアイデアはないでしょうか。 マクロで解決できるのか、やっぱりVBAでやるしかないのか、 また何か良いサイトをご存知でしたらご紹介ください。 よろしくお願い致します。

  • Excelの集計について教えてください。

    Excelの集計について教えてください。 集計すると、集計合計が挿入されますが、その行に全ての項目名を表示する方法はありませんか? (例) 担当 顧客名  品名 単価   数量 ◎◎◎ ・・・・ NNNN 500    5 ◎◎◎ ・・・・ NNNN  500    58   ・・・・;合計  1000   63 で表示されますが、担当名・品名 など全ての項目名を合計行に表示して 集計する方法はありませんか? 宜しくお願い致します。

  • Excel VBA 1行にあるすべての項目の検索

    いつもお世話になっております。 Excel97 VBA に関しての質問です。 Excelシート内のある1行に存在する項目から特定の項目を検索する方法ってありませんか? <例>   A   B   C   D   E   F      --------------------------- 1|会社  社員  番号  住所  番号  備考  というようなExcelになったってたとして、 Range("1").Search("住所") みたいな、一行目にある"住所"って項目があるかないかを判断できる方法ってないですかね? ※上記プログラムは適当ですw どなたかご教授願います><

  • アクセスでのデータ抽出方法

    宜しくお願い致します。 顧客No.1~25,000までの管理番号毎に会社名・担当者名・住所・telなどの顧客データを割り当ててアクセス(2003)で管理しているのですが、その管理番号から末尾偶数(奇数)のみを抽出する方法を教えて下さい。 ちなみに各フィールドは顧客No.、社名、〒、住所、TEL、担当者名、備考で設定して作りこんでいる程度です。 どうぞ宜しくお願い致します。