Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


234 / 3841 ページ ←次へ | 前へ→

【77778】Re:集計の仕方
発言  γ  - 15/12/20(日) 11:25 -

引用なし
パスワード
   おお、記念すべきラッキーセブンだったのですねえ。
こんなコメントでよかったのかしらん。
・ツリー全体表示

【77777】Re:集計の仕方
発言  γ  - 15/12/20(日) 11:23 -

引用なし
パスワード
   >γさん
>私の質問がわかりづらくスミマセンでした。

そうお考えなら、全然追加説明がないのはどうしたことだったのでしょう。

それは、何か勤務期間か、作業期間の統計なんでしょう?
途中の休憩は無いんですか?
ふたつのクールにわかれているのに、
そうした情報をなくしてしまって、後続の処理に影響はないんですか?、
情報量が減少してしまってよいのですか、
ということをお聞きしたのです。

後続の集計とは何ですか?
勤務時間の合計をとることですか?
元データの 終了時間 - 開始時間 を計算した項目を追加して、
それもピボットで集計しておけば、
間の休憩を除いた実勤務時間が集計できます。

---------
あと、ピボットテーブルを敬遠する人は珍しくありません。
操作方法がわかりにくいことも確かです。
特に、表形式というスタイルを知らない人が多いです。

それと、既に書きましたが、
ピボットを別の空いている場所に値のみ複写(書式も必要か)すれば、
ピボットとしての機能は全く消えて、自由に加工ができます。
手作業に入力した普通の表と同じじゃありませんか。
それではどこがまずいんでしょうか?

そのステップをとりたくない、関数のようにリンクさせたいのだ、
ということなら、一連の処理(ピボット作成から転記まで)をマクロにしておけば、
ボタン一つで加工可能な表が得られます。

すでに指摘がありますように、
何がピボット使用の障害になっているのか、さっぱりわかりませんでした。

もちろん、ピボット以外にも手法はあります。
Dictionaryでもできますが、Excel標準の機能を活かしたほうが、
質問者さんがこれから修正や機能拡張するにも容易でしょう。
・ツリー全体表示

【77776】Re:集計の仕方
発言  事務 E-MAIL  - 15/12/20(日) 10:23 -

引用なし
パスワード
   ▼マナ さん:
>▼事務 さん:
>
>もう一つ無駄覚悟で。
>統合を使う方法です。
>
>1)日付&名前の作業列を挿入(C列)
>2)CDE列で統合:集計は最大値
>3)CD列で統合:集計は最小値
>4)統合先の日付と名前を分割
>5)統合元の作業列(C列)を削除
>
>みたいな感じで、可能かもしれません。
>こちらも深く考えていませんので、出来なかったらごめんなさいです。

マナさん
統合も検索して勉強してみます。
・ツリー全体表示

【77775】Re:集計の仕方
発言  事務 E-MAIL  - 15/12/20(日) 10:18 -

引用なし
パスワード
   ▼マナ さん:
>▼事務 さん:
>
>まだピボットテーブルが何故駄目なのか理解できていませんが、
>何らかの理由で使いたくないとして、
>Dictionaryを勉強してみてはどうでしょうか。    
>        
>ht tp://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_dictionary.html        
>        
>・日付&名前をキーにして、Array(日付,名前,開始時刻,終了時刻)を登録    
>・既に登録されていたら、開始時刻は早い方、終了時刻は遅い方で上書き
>
>みたいな感じで、可能かもしれません。
>深く考えていませんので、出来なかったらごめんなさいですが
>無駄を覚悟できるなら、トライしてみてください。


マナさん
おはようございます。
arrayを使うのがいいかなと想像はしていました。Dictionaryは塑像していませんでした。勉強してみます。
・ツリー全体表示

【77774】Re:集計の仕方
発言  マナ  - 15/12/20(日) 10:17 -

引用なし
パスワード
   ▼事務 さん:

もう一つ無駄覚悟で。
統合を使う方法です。

1)日付&名前の作業列を挿入(C列)
2)CDE列で統合:集計は最大値
3)CD列で統合:集計は最小値
4)統合先の日付と名前を分割
5)統合元の作業列(C列)を削除

みたいな感じで、可能かもしれません。
こちらも深く考えていませんので、出来なかったらごめんなさいです。
・ツリー全体表示

【77773】Re:集計の仕方
発言  マナ  - 15/12/20(日) 10:00 -

引用なし
パスワード
   ▼事務 さん:

まだピボットテーブルが何故駄目なのか理解できていませんが、
何らかの理由で使いたくないとして、
Dictionaryを勉強してみてはどうでしょうか。    
        
ht tp://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_dictionary.html        
        
・日付&名前をキーにして、Array(日付,名前,開始時刻,終了時刻)を登録    
・既に登録されていたら、開始時刻は早い方、終了時刻は遅い方で上書き

みたいな感じで、可能かもしれません。
深く考えていませんので、出来なかったらごめんなさいですが
無駄を覚悟できるなら、トライしてみてください。
・ツリー全体表示

【77772】Re:集計の仕方
発言  事務 E-MAIL  - 15/12/20(日) 9:57 -

引用なし
パスワード
   ▼佳 さん:
>こんにちは。
>
>一切例外なしに必ず 1件2行なら、普通に数式でいけますが?
>
>
>> ピボットテーブルで集計が終わりではなく、(集計後)を利用してさらにデータ加工します。
>ピボットテーブルが駄目な理由として 成立していませんねぇ。
>やってみて、うまく行かなかったのですか?
>だから、「ピボットテーブルとは集計を終わらせるものだ」
>「ピボットテーブルを利用して加工は絶対できない」と?
>「でも回答者にはできるかもしれない」とはお考えになりませんか?
>
>
>▼事務 さん:
>>こんばんは。EXCEL VBA初心者です。
>>※データは3000行ぐらいあります。
>>(元データ)を(集計後)のようにしたいのです。その後(集計後を)さらに加工を予定しています。
>>ピボットテーブルのようにVBAをしたいのですがうまくいきません。他にどのような方法があるのかまったく思い浮かびません。
>>コードのアプローチを教えてください。よろしくお願い致します。
>>
>>
>>(元データ)
>>日付    氏名    開始時間    終了時間
>>2月1日    A    8:00        12:00
>>2月1日    A    12:00        15:00
>>2月1日    B    9:00        11:00
>>2月1日    B    11:00        16:00
>>2月2日    A    7:00        9:00
>>2月2日    A    9:00        14:00
>>2月2日    B    10:00        16:00
>>2月2日    B    16:00        17:00
>>
>>(集計後)
>>日付    氏名    開始時間    終了時間
>>2月1日    A    8:00        15:00
>>2月1日    B    9:00        16:00
>>2月2日    A    7:00        14:00
>>2月2日    B    10:00        17:00


佳さん
おはようございます。
説明不足でスミマセン。
必ず2行ではありません。
日付も氏名も複数でバラバラです。
要はピボットテーブルで作成はできるのですが、ピボットテーブルで作成されたデータをVBAで引用する方法はわかりません。ですのでVBAで集計したデータのほうが次にデータ加工しやすいのではと思っているのです。
・ツリー全体表示

【77771】Re:集計の仕方
発言    - 15/12/20(日) 8:34 -

引用なし
パスワード
   こんにちは。

一切例外なしに必ず 1件2行なら、普通に数式でいけますが?


> ピボットテーブルで集計が終わりではなく、(集計後)を利用してさらにデータ加工します。
ピボットテーブルが駄目な理由として 成立していませんねぇ。
やってみて、うまく行かなかったのですか?
だから、「ピボットテーブルとは集計を終わらせるものだ」
「ピボットテーブルを利用して加工は絶対できない」と?
「でも回答者にはできるかもしれない」とはお考えになりませんか?


▼事務 さん:
>こんばんは。EXCEL VBA初心者です。
>※データは3000行ぐらいあります。
>(元データ)を(集計後)のようにしたいのです。その後(集計後を)さらに加工を予定しています。
>ピボットテーブルのようにVBAをしたいのですがうまくいきません。他にどのような方法があるのかまったく思い浮かびません。
>コードのアプローチを教えてください。よろしくお願い致します。
>
>
>(元データ)
>日付    氏名    開始時間    終了時間
>2月1日    A    8:00        12:00
>2月1日    A    12:00        15:00
>2月1日    B    9:00        11:00
>2月1日    B    11:00        16:00
>2月2日    A    7:00        9:00
>2月2日    A    9:00        14:00
>2月2日    B    10:00        16:00
>2月2日    B    16:00        17:00
>
>(集計後)
>日付    氏名    開始時間    終了時間
>2月1日    A    8:00        15:00
>2月1日    B    9:00        16:00
>2月2日    A    7:00        14:00
>2月2日    B    10:00        17:00
・ツリー全体表示

【77770】Re:集計の仕方
お礼  事務 E-MAIL  - 15/12/19(土) 23:12 -

引用なし
パスワード
   ▼γ さん:
>>データはありません。
>ああ、そうなんですか。
>
>でもそうなら、どうしても疑念が湧いてきます。
>
>かならず、一件目の終了時刻と二件目の開始時刻は同一なら、
>なぜ2件のデータになっているんですか?
>もともと一件のデータではなく、2件になる必然性というか
>意味がわかりません。
>
>なぜ、こんなにこだわるかというと、
>前提が途中で変わってしまうと、お互いに無駄になるからなんです。
>
>
>繰り返しになりますが、
>・途中に空き時間がなく、連続したデータにすることが目的なら、
> 既に示したように、ピボットテーブルでお望みのことができます。
> それをコピーペイストすれば、求めるものができます。
>・1件でも、2件3件でも間に空きがなく、1件にまとめることができるなら、
> ピボットが最強です。データの変更も簡単に更新可能です。
>
>ピボットはどうしても"身の毛がよだつほど嫌いだ"ということなら、
>データ件数は常に一人2件であるとか、前提を正確に提示されれば、
>どなたかから回答が寄せられるかもしれません。


γさん
私の質問がわかりづらくスミマセンでした。
・ツリー全体表示

【77769】Re:集計の仕方
発言  γ  - 15/12/19(土) 23:02 -

引用なし
パスワード
   >データはありません。
ああ、そうなんですか。

でもそうなら、どうしても疑念が湧いてきます。

かならず、一件目の終了時刻と二件目の開始時刻は同一なら、
なぜ2件のデータになっているんですか?
もともと一件のデータではなく、2件になる必然性というか
意味がわかりません。

なぜ、こんなにこだわるかというと、
前提が途中で変わってしまうと、お互いに無駄になるからなんです。


繰り返しになりますが、
・途中に空き時間がなく、連続したデータにすることが目的なら、
 既に示したように、ピボットテーブルでお望みのことができます。
 それをコピーペイストすれば、求めるものができます。
・1件でも、2件3件でも間に空きがなく、1件にまとめることができるなら、
 ピボットが最強です。データの変更も簡単に更新可能です。

ピボットはどうしても"身の毛がよだつほど嫌いだ"ということなら、
データ件数は常に一人2件であるとか、前提を正確に提示されれば、
どなたかから回答が寄せられるかもしれません。
・ツリー全体表示

【77768】Re:集計の仕方
発言  事務  - 15/12/19(土) 22:17 -

引用なし
パスワード
   ▼γ さん:
>▼事務 さん:
>>>日付    氏名    開始時間    終了時間
>>>2月1日    A    8:00        12:00
>>>2月1日    A    13:00        15:00
>>>のようなデータは無いのですか?
>
>こちらの質問については回答は無いんですか?
>
>>ピボットテーブルで集計が終わりではなく、(集計後)を利用してさらにデータ加工します。
>
>ピボットテーブルに直接加工することだけが使い道ではないです。
>ピボットテーブルを値、書式複写すれば、
>そちらにいくらでも加工できますが。
>皆さん、そうしてますよ。

γさん、スミマセン。もう一つの質問に気づきませんでした。データはありません。
・ツリー全体表示

【77767】Re:集計の仕方
発言  γ  - 15/12/19(土) 22:09 -

引用なし
パスワード
   ▼事務 さん:
>>日付    氏名    開始時間    終了時間
>>2月1日    A    8:00        12:00
>>2月1日    A    13:00        15:00
>>のようなデータは無いのですか?

こちらの質問については回答は無いんですか?

>ピボットテーブルで集計が終わりではなく、(集計後)を利用してさらにデータ加工します。

ピボットテーブルに直接加工することだけが使い道ではないです。
ピボットテーブルを値、書式複写すれば、
そちらにいくらでも加工できますが。
皆さん、そうしてますよ。
・ツリー全体表示

【77766】Re:集計の仕方
発言  事務  - 15/12/19(土) 22:02 -

引用なし
パスワード
   ▼γ さん:
>回答ではなく、質問の確認です。
>
>日付    氏名    開始時間    終了時間
>2月1日    A    8:00        12:00
>2月1日    A    13:00        15:00
>のようなデータは無いのですか?
>その場合も、
>2月1日    A    8:00        15:00
>で良いというなら、ピボットで
>開始時間の最小値、
>終了時間の最大値
>を採ればいいわけだが。
>
>2件のデータになっているのは、それなりの意味があるんじゃないんですか?


γさん
こんばんは。
マナさんと同じ回答ですが
ピボットテーブルで集計が終わりではなく、(集計後)を利用してさらにデータ加工します。
・ツリー全体表示

【77765】Re:集計の仕方
発言  事務  - 15/12/19(土) 21:58 -

引用なし
パスワード
   ▼マナ さん:
>▼事務 さん:
>
>>ピボットテーブルのようにVBAをしたいのですがうまくいきません。
>
>ピボットテーブルでは、何故だめなのでしょうか

マナさん
こんばんは。
ピボットテーブルで集計が終わりではなく、(集計後)を利用してさらにデータ加工します。
・ツリー全体表示

【77764】Re:集計の仕方
発言  γ  - 15/12/19(土) 21:47 -

引用なし
パスワード
   回答ではなく、質問の確認です。

日付    氏名    開始時間    終了時間
2月1日    A    8:00        12:00
2月1日    A    13:00        15:00
のようなデータは無いのですか?
その場合も、
2月1日    A    8:00        15:00
で良いというなら、ピボットで
開始時間の最小値、
終了時間の最大値
を採ればいいわけだが。

2件のデータになっているのは、それなりの意味があるんじゃないんですか?
・ツリー全体表示

【77763】Re:集計の仕方
発言  マナ  - 15/12/19(土) 21:46 -

引用なし
パスワード
   ▼事務 さん:

>ピボットテーブルのようにVBAをしたいのですがうまくいきません。

ピボットテーブルでは、何故だめなのでしょうか
・ツリー全体表示

【77762】集計の仕方
質問  事務  - 15/12/19(土) 21:30 -

引用なし
パスワード
   こんばんは。EXCEL VBA初心者です。
※データは3000行ぐらいあります。
(元データ)を(集計後)のようにしたいのです。その後(集計後を)さらに加工を予定しています。
ピボットテーブルのようにVBAをしたいのですがうまくいきません。他にどのような方法があるのかまったく思い浮かびません。
コードのアプローチを教えてください。よろしくお願い致します。


(元データ)
日付    氏名    開始時間    終了時間
2月1日    A    8:00        12:00
2月1日    A    12:00        15:00
2月1日    B    9:00        11:00
2月1日    B    11:00        16:00
2月2日    A    7:00        9:00
2月2日    A    9:00        14:00
2月2日    B    10:00        16:00
2月2日    B    16:00        17:00

(集計後)
日付    氏名    開始時間    終了時間
2月1日    A    8:00        15:00
2月1日    B    9:00        16:00
2月2日    A    7:00        14:00
2月2日    B    10:00        17:00
・ツリー全体表示

【77761】Re:テキストファイルをエクセルのシート...
発言  マナ  - 15/12/19(土) 17:25 -

引用なし
パスワード
   ▼PSVV9134 さん:

3段階でいいのでは?

1)テキストファイルを開いて
2)シート名を測定データに変更し
3)所定のフォルダにXLS形式で保存(上書き保存)
・ツリー全体表示

【77760】Re:テキストファイルをエクセルのシート...
発言  γ  - 15/12/19(土) 17:16 -

引用なし
パスワード
   他人にコードを書いて貰おうと思っていますか?
それともご自分で作ろうとしていますか?

後者なら重要なことから順にステップを踏んで実現していくことですね。

テキストファイルをExcelに読み出すには、
データ - 外部データの取込 - テキストファイル
を使うといいですよ。
マクロ記録をとればコードができます。

ファイル指定は GetOpenFilenameを使います。
ネットで使い方を調べてください。拡張子指定もできます。

あとは、微調整ですね。
・ツリー全体表示

【77759】テキストファイルをエクセルのシートに自...
質問  PSVV9134 E-MAIL  - 15/12/19(土) 16:43 -

引用なし
パスワード
   vbaについて

テキストファイルをエクセルにコピーし(エクセルの上にドラックして開いた時のような感じ)
それを応用して作業しようと思うのですが下記ことをやる場合どういうコードを書けばいいでしょうか。


@どのテキストファイルをコピーするか聞く(ダイアログボックスで)
※txtのみ開けるようにする
※すでに開いている場合は、[abc.txtを閉じてください。閉じたらOKを押してください。やめる場合は、キャンセルを押してください。]と表示する(OK・キャンセルボタン)
※ファイルが見つからない場合は、[ファイルが見つかりません。もう一度探しますか。]と聞ききダイアログボックスもう一度開き探させる(はい・いいえボタン)

Aデスクトップにある測定結果のフォルダに
@で選択したファイル名(例:abc.txt → abc.xls)で
Excelファイル(xls形式)を作り開く
※すでに開いている場合は、[abc.xlsを閉じてください。閉じたらOKを押してください。やめる場合は、キャンセルを押してください。]と表示する(OK・キャンセルボタン)
※すでに同一のExcelファイルがある場合は、上書きしますかと聞き
はいを選択したら上書きする(はい・いいえボタン)

BAのExcelファイルに
@で選択したテキストデータを貼り付け

CBで貼り付けたシート名を測定データに変更

D初めに作られているSheet1、Sheet2、Sheet3があれば削除

E保存(上書き)
・ツリー全体表示

234 / 3841 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free