Page 366 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼数字を分割したい いちご 03/8/27(水) 12:48 ┣Re:数字を分割したい MJ 03/8/27(水) 13:54 ┃ ┗Re:数字を分割したい gio 03/8/27(水) 15:48 ┃ ┗Re:数字を分割したい gio 03/8/27(水) 15:55 ┃ ┗Re:数字を分割したい いちご 03/8/27(水) 16:05 ┃ ┣Re:数字を分割したい こうちゃん 03/8/27(水) 16:52 ┃ ┣Re:数字を分割したい gio 03/8/27(水) 17:01 ┃ ┣Re:数字を分割したい MJ 03/8/27(水) 17:15 ┃ ┗gioさん、MJさんに1票 こうちゃん 03/8/27(水) 17:44 ┃ ┗具体的に書きます。 いちご 03/8/28(木) 9:59 ┃ ┗Re:具体的に書きます。 こうちゃん 03/8/28(木) 11:12 ┃ ┗Re:具体的に書きます。 いちご 03/8/28(木) 13:23 ┃ ┗お願い!!教えて!! こうちゃん 03/8/28(木) 14:21 ┃ ┗Re:お願い!!教えて!! いちご 03/8/28(木) 17:26 ┃ ┗Re:お願い!!教えて!! こうちゃん 03/8/29(金) 10:54 ┗≠回答 YU-TANG 03/8/30(土) 16:07 ┗Re:≠回答 いちご 03/9/3(水) 10:52 ─────────────────────────────────────── ■題名 : 数字を分割したい ■名前 : いちご ■日付 : 03/8/27(水) 12:48 -------------------------------------------------------------------------
アクセス上にある数字「111111000001〜111111000010」を分割して表示したのですが どうすればよいのでしょうか?できればクエリで抽出したときにできればいいかと思うのですが、そのようなことできますか? アクセスはまだまだ初心者なもので。。。。 よろしくお願いします。 |
Mid関数を使用されてはどうでしょう。 |
こんにちWA 例(VBA): Dim suuji As String Dim nami As String suuji = "111111000001〜111111000010" nami = InStr(suuji, "〜") mae = Mid(suuji, 1, nami - 1) usiro = Mid(suuji, nami + 1) こんな感じ? split関数が使えるのなら、そちらを調べてみて 下さい。あっちの方が簡単かも。 そいでは |
>Dim nami As String あっ nami は Integer だ。 Dim nami As Integer |
▼>Dim nami As Integer 教えて頂いた式はクエリの抽出条件の箇所に入れればいいのですか? そのあたりも教えてください。どこをどお触ってよいかもわからないのです。 VBAもアクセスも初心者なもので。。。 |
いちごさん、みなさん、こんにちは 横レス失礼しますね。 いちごさん、もっと全体的に具体的に質問してください。 いきなり >教えて頂いた式はクエリの抽出条件の箇所に入れればいいのですか? といわれても、みなさん回答しようがありませんよ。 まして >そのあたりも教えてください。どこをどお触ってよいかもわからないのです。 といわれても、どこをどう答えていいのかわかりません。 いちごさんの聞き方だと、皆さんのような回答以外を期待するのは難しいですよ。 察するところ、たとえば、テーブルのあるフィールドに 111111000001 111111000002 111111000003 111111000004 111111000005 111111000006 111111000007 111111000008 111111000009 111111000010 111111000011 111111000012 111111000013 ・ ・ ・ のようなデータがあって、そのなかから範囲を指定して抽出したいってことなんですか? もしそのような問い合わせならば、以下のような回答が引き出せるでしょう・・ クエリの抽出条件に Between "111111000001" And "111111000010" のように入力してみてください。 |
こんにちWA もしかしたら自分が勘違いをしてるのかも。。 固定で12桁の数値どうしを分割するのなら、クエリーで "ある数字"のフィールドがあるテーブルを選択して クエリのフィールドの所の 1列目に 前: Mid([数字],1,12) と2列目に 後: Mid([数字],14) と入力すれば分割して表示されます。 >| 前 | 後 | *|111111000001 |111111000010 | ちなみに[数字]は"ある数字"があるテーブル内の フィールド名を入力してください。 "ある数字"が12桁の固定じゃないときはVBAで対処 できるますが、とりあえず、上のやつを参考にして みてください。 こうちゃんさんの言うとおりだとしたら、そちらを 参考にしてください。 |
まるで連想ゲームのようになっていますが、 当方は以下のように想像していました。 テーブルのフィールドに、 111111000001111111000002111111000003〜 というデータが入っていて、これをクエリーで 111111000001 111111000002 111111000003 というフィールドに別けたいのかな? と思ったので、 クエリーのフィールド欄にMid関数を使われては? と提案した次第です。 この場合は、以下のようになるかと。 フィールド名1:Mid([テーブル名].[フィールド名],1,12) フィールド名2:Mid([テーブル名].[フィールド名],13,12) フィールド名3:Mid([テーブル名].[フィールド名],25,12) |
みなさん、こんにちは。 私もgioさん、MJさんのおっしゃるようなことかとも推測したのですが、mid関数の反応があまりよくないようなので、別の推理してみました(^^;) |
上手く説明できていなかったのでみなさんに迷惑かけました。。 詳しく説明します。 使いたいデータは 111-22(品番)10(数量)111111000001〜111111000010 のアクセスのデータをシールに展開するためにこの「111111000001〜111111000010」 の数字を分割して1〜10まで個別で表示したいのです。 その展開の仕方を知りたいのです。 どこにどの式をいれていいものやらわからずにいます。 アクセスで抽出したデータからエクセルに展開することも可能なのでしょうか?できればテーブルのデータをそのまま使いたいのです。 これでイメージできますでしょうか? よろしくお願いします。 |
いちごさん、こんにちは >上手く説明できていなかったのでみなさんに迷惑かけました。。 >詳しく説明します。 >使いたいデータは >111-22(品番)10(数量)111111000001〜111111000010 >のアクセスのデータをシールに展開するためにこの「111111000001〜111111000010」 >の数字を分割して1〜10まで個別で表示したいのです。 >その展開の仕方を知りたいのです。 だから、どこに展開するのですか?????? 元データの形式はこれまでの質問で、みなさんある程度”想定”できています。 これを、どこにどんな展開をするのかが分からないのです。 シールというのはなんでしょ? アクセスのレポートで作りたいんでしょうか? エクセルで作るの? どんな形式で?? そのあたりは、いちごさん以外は分かりませんので、そこを説明してください。 >どこにどの式をいれていいものやらわからずにいます。 なにをしたいかわからないので、なにをお答えしたらいいものやらわかっていません? >アクセスで抽出したデータからエクセルに展開することも可能なのでしょうか?できればテーブルのデータをそのまま使いたいのです。 そのまま使うというのはVBAの変数として使えればいいんですか? それともエクセルのシートに書き込みたいのですか? 展開のしかたそのものは、このスレッドとExcel質問箱で回答されています。 その内容を踏まえて、なにをしたいのかもっともっと具体的に質問してください。 また、これまでの回答内容はご理解いただけたのかどうかとか、回答のここがうまく理解できないとか、こうするにはどうしたらいいとかの反応も欲しいですね。 少し整理しましょう。 「111111000001〜111111000010」の形式のデータがアクセスのテーブルのフィールドにあるんですよね。 これは 「111112000001〜111112000006」とか「111113000004〜111111000016」のように10個とは限らないで変動する値の範囲(いちごさんの例では「数量」フィールドで示される数)になってるってことでいいですか? さらに、これらは連続した数値ってことでいいですか? シールはどんな形式で作成するのでしょう? たとえば、市販のラベルシートを使用してアクセスのレポートで作成するとか、エクセルのシート上で列方向にC列からD,E,F・・に「111111000001」「111111000002」「111111000003」と貼り付けるとか・・ すべてをアクセスで処理したいかどうかとか、アクセスのバージョンとかもあったほうがいいですね。 参考までに、ADOでテーブルを開いてエクセルに貼り付けるコード上げときます。 もし、実行するならADOの参照設定が必要です。 もちろんテーブル名やフィールド名も実際のものにする必要があります。 またエクセルには数値で貼り付けしますので、セルの表示形式を「数値」にしないとうまく表示できないかもしれません。 (Access2000で作成・試験しています) Sub test() Dim DataConn As ADODB.Connection Dim rs As ADODB.Recordset Dim strSQL As String Dim S_Num As Double Dim NumCount As Long Dim Num() As Double Dim i As Integer Dim j As Long Dim objExlApp As Object Dim objExlBook As Object Dim objExlSheet As Object Set DataConn = CurrentProject.Connection Set rs = New ADODB.Recordset strSQL = "SELECT 品番, 数量, 連番 FROM TABLE1 " rs.Open strSQL, DataConn, adOpenStatic If Not rs.EOF Then Set objExlApp = CreateObject("Excel.Application") If objExlApp.Workbooks.Count < 1 Then objExlApp.Workbooks.Add End If Set objExlBook = objExlApp.ActiveWorkbook Set objExlSheet = objExlBook.Sheets(1) j = 0 Do While Not rs.EOF NumCount = rs("数量") S_Num = CDbl(Mid(rs("連番"), 1, 12)) ReDim Num(NumCount - 1) For i = 0 To NumCount - 1 Num(i) = S_Num + i Next j = j + 1 objExlSheet.Cells(j, 1).Value = rs("品番") objExlSheet.Cells(j, 2).Value = rs("数量") For i = 0 To NumCount - 1 objExlSheet.Cells(j, i + 3).Value = Num(i) Next rs.MoveNext Loop objExlApp.Visible = True Set objExlSheet = Nothing Set objExlBook = Nothing Set objExlApp = Nothing End If rs.Close Set rs = Nothing Set DataConn = Nothing End Sub |
▼こうちゃん さん: >>アクセスで抽出したデータからエクセルに展開することも可能なのでしょうか?できればテーブルのデータをそのまま使いたいのです。 >そのまま使うというのはVBAの変数として使えればいいんですか? VBA変数がわかりません。 >それともエクセルのシートに書き込みたいのですか? アクセスからエクセルにシートに書き込みたいです。 >展開のしかたそのものは、このスレッドとExcel質問箱で回答されています。 >その内容を踏まえて、なにをしたいのかもっともっと具体的に質問してください。 >また、これまでの回答内容はご理解いただけたのかどうかとか、回答のここがうまく理解できないとか、こうするにはどうしたらいいとかの反応も欲しいですね。 なかなか上手く伝えることができずすみません。 > >少し整理しましょう。 >「111111000001〜111111000010」の形式のデータがアクセスのテーブルのフィールドにあるんですよね。 >これは >「111112000001〜111112000006」とか「111113000004〜111111000016」のように10個とは限らないで変動する値の範囲(いちごさんの例では「数量」フィールドで示される数)になってるってことでいいですか? →10個とは限らずいろんな数が存在します。 >さらに、これらは連続した数値ってことでいいですか? 連続した数値です。 例 444-44 10 44444400001〜444444000010 333-33 5 333333000001〜333333000005 333-34 4 333333000006〜333333000010 これはシールマシンでシールを発行したあとにこのアクセスのテーブルに上記のようにデータがおちてくる仕組みになっています。 > >シールはどんな形式で作成するのでしょう? >たとえば、市販のラベルシートを使用してアクセスのレポートで作成するとか、エクセルのシート上で列方向にC列からD,E,F・・に「111111000001」「111111000002」「111111000003」と貼り付けるとか・・ 市販のラベルシールにCODE39で貼り付けます。この「〜」のデータがでてくれば 貼り付けるのは簡単なのです。 あとアクセスのレポートから市販のラベルに展開することが可能なのですか??? > >すべてをアクセスで処理したいかどうかとか、アクセスのバージョンとかもあったほうがいいですね。 すべてアクセスで処理するのがミスを防ぐにもいいのです。できれば使いやすいエクセルに展開できればと思ったのです。 >参考までに、ADOでテーブルを開いてエクセルに貼り付けるコード上げときます。 これをやってみます。 |
いちごさん、欲求不満でもだえてます。 >>少し整理しましょう。 >>「111111000001〜111111000010」の形式のデータがアクセスのテーブルのフィールドにあるんですよね。 >>これは >>「111112000001〜111112000006」とか「111113000004〜111111000016」のように10個とは限らないで変動する値の範囲(いちごさんの例では「数量」フィールドで示される数)になってるってことでいいですか? →10個とは限らずいろんな数が存在します。 >>さらに、これらは連続した数値ってことでいいですか? >連続した数値です。 > 例 444-44 10 44444400001〜444444000010 > 333-33 5 333333000001〜333333000005 > 333-34 4 333333000006〜333333000010 > これはシールマシンでシールを発行したあとにこのアクセスのテーブルに上記のようにデータがおちてくる仕組みになっています。 ここは理解しています。 >>シールはどんな形式で作成するのでしょう? >>たとえば、市販のラベルシートを使用してアクセスのレポートで作成するとか、エクセルのシート上で列方向にC列からD,E,F・・に「111111000001」「111111000002」「111111000003」と貼り付けるとか・・ > 市販のラベルシールにCODE39で貼り付けます。この「〜」のデータがでてくれば だから「どこに」でてきて欲しいの・・ > 貼り付けるのは簡単なのです。 貼り付けるのはVBAでするの?????????? 現在している処理と期待している処理を、お願いだから教えてください。 > あとアクセスのレポートから市販のラベルに展開することが可能なのですか??? たとえばA4の用紙にシール付きのラベルが配置されているようなラベルシートにレポートを印刷するようなことは普通におこなわれています。 ただCODE39ってのがわからないので、この形式でできるかどうかはわかりません。 >>参考までに、ADOでテーブルを開いてエクセルに貼り付けるコード上げときます。 >これをやってみます。 わからなければ、具体的に、できればコードを添えて、質問してください(^^;) |
▼こうちゃん さん:> >>>シールはどんな形式で作成するのでしょう? >>>たとえば、市販のラベルシートを使用してアクセスのレポートで作成するとか、エクセルのシート上で列方向にC列からD,E,F・・に「111111000001」「111111000002」「111111000003」と貼り付けるとか・・ >> 市販のラベルシールにCODE39で貼り付けます。この「〜」のデータがでてくれば >だから「どこに」でてきて欲しいの・・ エクセルです。 > >> 貼り付けるのは簡単なのです。 >貼り付けるのはVBAでするの?????????? ここは市販のソフトで行います。VBAとかでもありません。 >現在している処理と期待している処理を、お願いだから教えてください。 現在はただアクセスのデータがあるのみです。その分割したい部分をエクセルに落としたいのです。そこから市販のソフトを使いデータを呼び込みます。 したい処理は「〜」の部分の間の数字を表示したいだけです。 ですのでアクセスからエクセルへこのデータの落とし方を教えてください。 何度もすみません。 |
いちごさん、こんにちは >エクセルです。 >ここは市販のソフトで行います。VBAとかでもありません。 その市販のソフトにエクセルのファイルを直接わたすのですか? 「エクセルのシートのどの位置にどのように表示すればいいのか」を聞いているのですが、そこはお答えいただけないのですか? 数値で貼り付けていいのですか? 前の書き込みで示したサンプルコードはそのまま数値で貼り付けておりますので、表示形式を変更しないと数字のままは見えませんがいいのですか? また、数字を右方向(列方向)に展開していますが、それでいいのですか? 品番の表示は必要ですか? 等々、出力したい「形」をご説明ください。 >アクセスからエクセルへこのデータの落とし方を教えてください。 前の書き込みで示したサンプルコードでは、いかがでしょうか? #先日来、BBSの調子がいまいちのような・・・、私のPCがおかしいのかな? |
そもそも いちご さんは VBA 可なのでしょうかね。 これは VBA 必須のケースでしょうから、VBA 不可であればその時点で アウトでしょうし、可なら自力脱出可能なヒントの提示で済むはずです。 どうも いちご さんの代わりに仕事をする方向に流れているように見え ますが、それで完璧なコードが出来たとして、本人にメンテンナンスも 何も出来ないコードを渡すことに何か意味が有るのかどうか、よく 分かりません。 少なくとも BBS と無料外注請負のあいだには境界が有るはずだと個人的 には思ったりします。 ここは *VBA* 質問箱という板なのであって、別に私は原理主義を振り かざす気は毛頭有りませんが、すでに皆さん充分に方法論は提示して いらっしゃるわけで、もしこれが話として通じないなら、単なる板違い ではないでしょうかね。 # 不適切な発言でしたら削除してください> WebMaster 殿 |
いろりろありがとうございました。 あとは自力でなんとかしていきます。 |