工程管理票(一品一様)を自動作成(印刷込み)したいのですが、
複雑で困っていますので教えてください。

下記3点の情報を基にしたいと考えています。
動作のイメージは③の中に書いています。

①「工程表作成予定機種データ(受注データ)」
・機種名
・台数
・注文NO
・納期
上記情報が横軸で入力されているデータ。
縦軸は約100件ほど。
(この100件を100枚の工程管理票に出力したい)

②「機種の工程情報マトリックス表」
縦軸に、全工程(20項目)があり、
横軸に機種名。
機種によって、全行程中、5~10工程ある。
表の中の機種の該当工程の部分に「1」が記入されている。
(必要に応じて、縦軸と横軸は変更可能)

③「工程管理票フォーマット」
用紙の上部は、機種名、台数、注文NO、納期を自動で①の最上行から転記し、
下部は、上半分の「機種名」に対応する②の表から
該当する工程(「1」が入力されている工程)のみ抽出して、
行を積めて配置(転記)し、その機種のフォーマットが完成したら、印刷。
次は①の次の行の分を処理、以降はループし、
①の約100件全てが処理出来たら終了

以上、よろしくお願いいたします。

A 回答 (1件)

ここでは、回答は無理でしょう。

VBAを理解している人に直接聞きましょう。
    • good
    • 0
この回答へのお礼

そうですか・・・
同僚に個別の動きは教えてもらえたのですが、それを繋げて使用できるようになるまで
詳しくなかったので。
他の掲示板でも質問してみます。

お礼日時:2017/06/19 12:33

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qファイル名に日本語が入っていると圧縮できない

他の人からもらったファイルを圧縮することができませんでした。調べてみましたところ、右クリックから「送る」で圧縮をするときに、たとえば「170714おいしい新巻鮭.jpg」などのように、日本語で書かれているフォルダやファイルが含まれていると圧縮できないようです。

さらに、このファイルから「おいしい新巻鮭」の部分を消して「170714.jpg」とすると圧縮できました。また、F2キーをおして文字をいったん消して「170714おいしい新巻鮭」と改めて入力しなおすと、圧縮できるようになりました。

このファイルを作った人はWindows10です。一体何が起こっているというんでしょう?

Aベストアンサー

> たとえば「170714おいしい新巻鮭.jpg」などのように、日本語で書かれているフォルダやファイルが含まれていると圧縮できないようです。

フツーに日本語で入力されているように見えて、おかしな文字コードとか空白が使われているとか。
ファイルを移動する途中で、Unix/Linuxの環境とか、FAT32でフォーマットされたUSBメモリとか経由すると、ややこしい事が起こるかも?

文字コードの一括変換の記事がありましたが、記事が古くて現在のWindowsのUTF-16(のハズ)に非対応だったり…。

@IT:Windows TIPS -- Tips:ファイルの文字コードを変換する
http://www.atmarkit.co.jp/fwin2k/win2ktips/312charcode/charcode.html


> その元の持ち主のWindows10の人から、「圧縮できないんだけど

例えば、USBメモリ(FAT32でフォーマットされている)でファイルを渡されて、USBメモリ上で圧縮しようとしてるとかだったら、ややこしいかも。
一度、HDDにコピー(この時に適正に変換されるかも)してから圧縮、USBメモリに戻すとかでは。


どういう媒体、送信方法、ファイル形式は非圧縮で階層化されたフォルダやファイル?フォルダの深さやフォルダ名の長さは?で渡されたとかの情報を補足してみるとか。

> たとえば「170714おいしい新巻鮭.jpg」などのように、日本語で書かれているフォルダやファイルが含まれていると圧縮できないようです。

フツーに日本語で入力されているように見えて、おかしな文字コードとか空白が使われているとか。
ファイルを移動する途中で、Unix/Linuxの環境とか、FAT32でフォーマットされたUSBメモリとか経由すると、ややこしい事が起こるかも?

文字コードの一括変換の記事がありましたが、記事が古くて現在のWindowsのUTF-16(のハズ)に非対応だったり…。

@IT:Windows TIPS -- Tips...続きを読む

Qエクセル関数:業務日報の日付自動入力

よろしくお願いします。

エクセルにて業務日報を作成するにあたって日付の自動入力をしたいと思います。
日付は「平成27年5月29日月曜日」といった表現にしたいです。

また、日報は月締めの翌日から月締めまでの1ヶ月間をひとまとめとします。

希望としては、その月の第一日目を手動で入力後、その次の日からはその手動で入力した第一日目を基準に自動的に入力出来れば、と思っています。

ただ、その中の条件として「特定の曜日(休日の事)は除外する」を盛り込みたいです。

こんな都合のよい関数は有るでしょうか?

ご指導お願いします。

Aベストアンサー

No.3・4です。

>特定の曜日を毎週水曜日と第二第四の日曜日としたい場合は・・・

前回の配置通りだとすると、作業列D2セルの数式を↓に変更してみてください。

=IF(OR(A$1+ROW(A1)>=EDATE(A$1,1),WEEKDAY(A$1+ROW(A1))=4,(WEEKDAY(A$1+ROW(A1))=1)*(DAY(A$1+ROW(A1))>=8)*(DAY(A$1+ROW(A1))<=14),(WEEKDAY(A$1+ROW(A1))=1)*(DAY(A$1+ROW(A1))>=22)*(DAY(A$1+ROW(A1))<=28)),"",A$1+ROW(A1))

他のセルの数式はそのままで大丈夫のはずです。m(_ _)m

Qエクセル画像も

教えて下さい。
色々と調べなのですが
よく判らないので
質問します。

表の中で写真を貼るのですが
セルの中心に揃える方法を
教えて下さい。
沢山の写真が有り一覧表を
作成しています。

Aベストアンサー

セルの高さ・幅がどれも同じで、写真もサイズ調整不要で同じサイズならそれほど難しくないんじゃないかな
配置は縦一列でも横一列でも良いので並べ、仮に縦5横9でもセルの切り貼りするだけ
写真の挿入は一度に45枚でもできると思う。
たぶん、縮小専用。やIrfanViewなどのフリーソフトで写真サイズを小さくしておく必要があると思う
写真はセルのサイズより小さい前提。

縦一列での作り方
0. セルの大きさをそろえる
1. A1セルに[Alt]キーを押しながら任意の図形を配置する
 図形がセルぴったり収まる
2. A1セルをコピー
3. A47・B2・B46セルに貼り付け
4. A2セルを選択して写真を45枚挿入する
5. A1,A47セルの図形を[Shift]キーを押しながら選択することで追加の選択
6. 図ツール - 配置 - 左右中央ぞろえ
7. 配置-上下に整列 (若干の上下のずれがあるが、セル内に収まるはず)
8. A2セルの写真とB2セルの図形のみを選択して上下中央揃え
9. A46セルの写真とB46セルの図形のみを選択して上下中央揃え
10. A2:A46セルの写真を(ホーム - 検索と選択 - オブジェクトの選択を使うと便利)選択し、
11. 書式 - 配置 - 上下に整列

セルの高さ・幅がどれも同じで、写真もサイズ調整不要で同じサイズならそれほど難しくないんじゃないかな
配置は縦一列でも横一列でも良いので並べ、仮に縦5横9でもセルの切り貼りするだけ
写真の挿入は一度に45枚でもできると思う。
たぶん、縮小専用。やIrfanViewなどのフリーソフトで写真サイズを小さくしておく必要があると思う
写真はセルのサイズより小さい前提。

縦一列での作り方
0. セルの大きさをそろえる
1. A1セルに[Alt]キーを押しながら任意の図形を配置する
 図形がセルぴったり収まる
2. A1セ...続きを読む

Qエディタ って?

テキストエディタ という言葉が使われましたが、何を表しているのでしょうか?

Aベストアンサー

ワープロの簡易版みたいな感じで、ほぼWindows のメモ帳のようなものです。文字サイズ、罫線とか図名を操作するような機能はありません。テキストのみを編集(エデット)するソフトです。

Qエクセルにて時間計算

エクセルの時間計算のことで質問です。息子の宿題なのですが、どうしても答えがでません。
A1は 07:30:00AM、 B1は 294、 B2は 84、 B3は =B1/B2 とタイプして 表示は 3.5 になっています。C1 は km C2は km/h C3はhours とタイプされています。 A1 は 07:30:00AM と表示になっていますが、07:30AMでも構わないと思います。

朝の7:30に家を出て 時速84km で294kmの距離を運転した時に 到着時刻をA2 に表示される様に A1 に計算式を 入力しないといけないのですが 一向に上手くいきません。 結局はB2セルに11:00AM と表示されれば良いのですが、どなたか教えていただけませんか? 息子の宿題の提出期限は来週の水曜日、6月7日です。 エクセルはどちらかと言うと初心者ですので、あまり難しい説明は理解不能かもしれません。

Aベストアンサー

表示したいセルはB2でなくてA2ですよね?
表示したいのは、7:30AMから、B3に計算済みの3.5時間経過した時間ですよね?

Excelでは、日時は基準の年月日から、1日を1.0として計算されたシリアル値で保持しています。
A1にシリアル値の7:30が入力されているとして、3.5をそのまま足しちゃうと3.5日後の日時になっちゃいます。
なので、
A2=B3/24
と、3.5日を24時間で割り算した値(=3.5時間)を足すと、OKなハズ。

--
#VALUE!になる場合、A1のセルの値がシリアル値として入力されていないのが原因のハズ。
まずは「7:30」とか入力してきちんと計算できる事を確認後、A1セルの書式設定、表示形式でAM/PMの形式に変更とか。

Qエクセル2013 入力した値は正しくありません・・・

自治会の会計帳簿で先月は普通に入力できていたのですが、今月分の入力を始めましたら、日付は入力できたのですが、文字入力をしましたら「入力した値は正しくありません。ユーザーの設定によってセルに入力できる値が制限されています。」と表示されてしまいました。

 担当者が変わり、エクセルの初心者なので、色々と対処しているうちに自分で設定を変えてしまっていたのでしょうか? ちんぷんかんぷんで困っています。
 ご教授の程どうぞよろしくお願い致します。

Aベストアンサー

数字しか入れられないように設定されたセルなのに文字を入力しようとしたとか。
シートを編集している過程で、誤って数字しか入力できないセルをコピーしてきてしまったとか。

他に正しく入力出来ていたシートがあれば、
そこからセルをコピーしてきて貼り付けるのが楽です。

そうで無ければ【データの入力規則】で設定を変更しましょう。


この辺が画像もあって参考になるかな?
(この例では数字0~100しか入力できない設定にしています)

121ware.com > サービス&サポート > Q&A > Q&A番号 012991
https://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=012991


入力規則の指定時に、左下の「すべてクリア」をクリックすると、入力制限が全て解除されます。

Qif関数について

①B1が300以上ならば、A1に5%をかける。
②B1が200以上300未満ならば、A1に3%をかける。
③B1が200未満ならば、A1に2%をかける。

上記の条件でif関数を使い、C1に結果を出したいときはどうすればよいでしょうか?
よろしくおねがいいたします。

Aベストアンサー

=IF(B1>=300,A1*1.5,IF(AND(300>B1,B1>=200),A1*1.3,A1*1.2))
で、どうでしょうか。

Qvba座標の続きです。

https://oshiete.goo.ne.jp/qa/9799279.html

Aベストアンサー

それから、前のスレッドの最後で放置した
管理表にもこのコードを貼って$C$16を
$N$2に変更すればそのまま使えるだろうという積りです。
問題あれば言ってください。

またエラーが取れたらブレークポイントは必要ありません。
エラーを見つけるまでは、解除しても見つかる理由に
ならないから。

QCellsがコピーできません

自分なりに下記条件でコード書いてみましたが、
うまくコピーできませんTT
説明不足かもしれませんが、どこがイケないのか
どなたかご教授いただけないでしょうか
当月末までに何とかしたいのですが、、、

不具合がある各商品データを行10~150、outdataシートに集約
列CにBOX-Noを持っており、setdataシート列CのBox-Noと一致したら
outdataシートからsetdataシートにその行ごと(商品データ)コピー
outdataがなくなるまで繰り返し、但し一商品に不具合が複数もある

outdataシートは月末には10~150行で増減がある(box-noはランダムで並ぶ)

setdataシートには商品すべてが入力されているレイアウトになっている
列CのBox-Noで商品名を検索し貼り付け(商品の一定位置行は決まっていない)
各商品には不具合データ貼り付け行が直下に5~30行ほどある


Sub tenki()

Set ws = Worksheets("setdata")
Set wo = Worksheets("outdata")

For outcnt = 10 To 150
outbox = wo.Cells(outcnt, "C")

If outbox <> "" Then

For setcnt = 1 To 3000
setbox = ws.Cells(setcnt, "C")

If outbox = setbox Then
wo.Range(wo.Cells(outcnt, "C"), wo.Cells(outcnt, "Z")).Copy _
Destination:=ws.Cells(setcnt + 2, "D")
End If

Next setcnt

End If

Next outcnt

End Sub

自分なりに下記条件でコード書いてみましたが、
うまくコピーできませんTT
説明不足かもしれませんが、どこがイケないのか
どなたかご教授いただけないでしょうか
当月末までに何とかしたいのですが、、、

不具合がある各商品データを行10~150、outdataシートに集約
列CにBOX-Noを持っており、setdataシート列CのBox-Noと一致したら
outdataシートからsetdataシートにその行ごと(商品データ)コピー
outdataがなくなるまで繰り返し、但し一商品に不具合が複数もある

outdataシートは月末には10~15...続きを読む

Aベストアンサー

ANo1です。

未だに、なさりたいことがよくわかりません。
意図と違う動作をするコードを示されても、実際になさりたいことを理解することはできませんね。

>なぜこうなるのか、手詰まりしていますTT
>何が足りないのでしょうか
記入される行位置が、意図するところと違うのだろうと想像しますが、それを決めているのは
>ws.Cells(setcnt+2, "D").End(xlup).Ofset(1,0)
という1行の計算部分です。
対象がはっきり絞り込めているので、この部分でどのように計算されているかを手計算でシミュレートしてみるとか、あるいは、デバッガのウオッチ式を利用しながら追跡してみたりすば、比較的簡単に理解できるのではないでしょうか?


以下は、私が勝手な想像で「こんなことでは?」と考えたものなので、内容的には異なる可能性が高いですがご参考までに。

※ ご例示の図ではデータの転記のされ方が説明文やご提示のコードと違うので、ますますわからなくなりますが、ご提示のコードでは『C~Z列のデータをD列~へ』転記するように記されていますのでそれに習っています。
(そうすると、C列の「Box○」の文字も転記されるので、何か違いそうですが…)
※ 「setdataシート」の構成い¥について、以下の仮定をしています
 (仮定が成立しない場合は、私の意図通りにも動作しません)
 ・C列にはキーとなる「Box○○」(○は数字)以外の文字は記入されていない
 ・同上の記入のある行から(2行下か?)から転記を始めるようですが、
  その2行分のD列には必ず何らかの記入がある(空白となっていることはない)
 ・同様に転記したデータの行でも、D列が空のものは存在しない
  (D列の空行を探して、転記していますので)
※ Box○○間の行数が少なくて転記できなくなった場合や、検索キーとなるBox○○と一致するものが「setdataシート」に存在しない場合は、とりあえず転記せず、その行数をカウントするようにしています。
実際には、いろいろな対処法が考えられると思います。
例えば、見当たらない場合は追加の項目を作成するとか、行を追加して記入するとか・・・
よくわからないので、カウントしておいて最後にその数を表示するようにしてあります。

※ あくまでも勝手な想像に基づいた処理ですので、(私にはわからない)質問者様の本当になさりたいこととは異なる可能性が大です。

Sub testSample()

Dim shs As Worksheet, shd As Worksheet
Dim rw As Long, r As Long, rTmp As Long
Dim val, errCount As Integer

errCount = 0
Set shs = Worksheets("outdata")
Set shd = Worksheets("setdata")

For rw = 10 To shs.Cells(Rows.Count, 3).End(xlUp).Row
 val = shs.Cells(rw, 3).Value
 r = 0
 On Error Resume Next
  r = WorksheetFunction.Match(shs.Cells(rw, 3).Value, shd.Columns(3), 0)
  If Err.Number <> 0 And val <> Empty Then errCount = errCount + 1
 On Error GoTo 0
 
 If r > 0 Then
  rTmp = shd.Cells(r, 4).End(xlDown).Row + 1
  If rTmp < shd.Cells(r, 3).End(xlDown).Row Then
   shd.Cells(rTmp, 4).Resize(, 24).Value = shs.Cells(rw, 3).Resize(, 24).Value
  Else
   errCount = errCount + 1
  End If
 End If
Next rw

If errCount > 0 Then MsgBox "転記できないものが " & errCount & "件ありました"
End Sub

ANo1です。

未だに、なさりたいことがよくわかりません。
意図と違う動作をするコードを示されても、実際になさりたいことを理解することはできませんね。

>なぜこうなるのか、手詰まりしていますTT
>何が足りないのでしょうか
記入される行位置が、意図するところと違うのだろうと想像しますが、それを決めているのは
>ws.Cells(setcnt+2, "D").End(xlup).Ofset(1,0)
という1行の計算部分です。
対象がはっきり絞り込めているので、この部分でどのように計算されているかを手計算でシミュレートしてみるとか...続きを読む

QVBAで、Functionを、クラスモジュールに置くか? 標準モジュールに置くか? 使い勝手は?

*.jpgファイルの撮影日時を、自作プログラムに読み込む必要に迫られ、いろいろお尋ねしました。
その結論は、ユーザー定義関数を自作して利用する、でした。
その時ご紹介頂いたのが、WEB公開のJpegExifクラスのCodeの利用でした。
その際、もっと端的に、システム内臓の、ADODB.Streamや、WIA.ImageFileを使って、
撮影日時を読み出す方法も教えて頂きました。

今回は、自前のCodeで撮影日時を読み出す事が目標でしたので、現在は、標準モジュールに、
JpegExifクラスの簡易版を置いて、自作プログラムを動かしています。

この際の試行錯誤の過程で、この簡易撮影日時読み出しFunctionを、クラスモジュールに置いたり、
標準モシュールに置いたり、いろいろテストしました。
両方の機能は同じで、使い勝手は標準モジュールに置いた方でした。

規模の大きいシステムで、クラスモジュールを使いこなされている方々にお伺いしたいのですが、
特定のFunctionを、クラスモジュールに置くか標準モジュールに置くかの判断の分岐点は何でしょうか?

*.jpgファイルの撮影日時を、自作プログラムに読み込む必要に迫られ、いろいろお尋ねしました。
その結論は、ユーザー定義関数を自作して利用する、でした。
その時ご紹介頂いたのが、WEB公開のJpegExifクラスのCodeの利用でした。
その際、もっと端的に、システム内臓の、ADODB.Streamや、WIA.ImageFileを使って、
撮影日時を読み出す方法も教えて頂きました。

今回は、自前のCodeで撮影日時を読み出す事が目標でしたので、現在は、標準モジュールに、
JpegExifクラスの簡易版を置いて、自作プログラムを動かしています。

こ...続きを読む

Aベストアンサー

昨日に書いた内容は、間違っていました。申し訳ありません。

『ブック間をまたぐようなものに関しては、その利便性は発揮しますが、……』
実際にこちらでユーザー定義関数を作ってやってみました。実際にやるのは、たぶん、二度目ぐらいで、うっすらと記憶のある程度でした。

私の言葉の説明よりも絵をみていただければよいのですが、
http://yamav102.cocolog-nifty.com/blog/2013/07/vba-friend-inst.html

Class のプロパティのInstancing を 「PublicNotCreateable」にして、相手のブックで、参照設定して、Classから呼び出すと、簡単に説明するとそうなるのですが、

昨日から、いろいろ検証してみたのですが、クラス・オブジェクトは、Public にすれば、Projects 間で簡単に融通が利くと思っていたのです。ところが、これでは、手数が多すぎます。これしかないのなら、やむを得ずおすすめしますが、アドインとして呼び出したほうが楽に扱えます。

ご質問者さんのは、ユーザー定義関数のスタイルですから、クラスを辞めて、標準モジュールに戻した後、ファイルをアドイン型(.xlam)で保存します。そして、アドインで呼び出した方が早いことが分かりました。

>VBAで、Functionを、クラスモジュールに置くか? 標準モジュールに置くか? 
結果としては、標準モジュールの方が良いということになりました。

なお、違うブックで、モジュールを共用して呼び出すなら、アドインにする必要もなく、VBEditor 内の相手のブック側で参照設定をすればよいです。

昨日に書いた内容は、間違っていました。申し訳ありません。

『ブック間をまたぐようなものに関しては、その利便性は発揮しますが、……』
実際にこちらでユーザー定義関数を作ってやってみました。実際にやるのは、たぶん、二度目ぐらいで、うっすらと記憶のある程度でした。

私の言葉の説明よりも絵をみていただければよいのですが、
http://yamav102.cocolog-nifty.com/blog/2013/07/vba-friend-inst.html

Class のプロパティのInstancing を 「PublicNotCreateable」にして、相手のブックで、参照設定して、...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング