Gizport
1 回答
0
Share (facebook)
58
view
全般

(再)エクセルVBAで繰り返し処理を行いながら、カウントをしたいです...

(再)エクセルVBAで繰り返し処理を行いながら、カウントをしたいです。 以前にも、同内容の質問をさせていただいたのですが
私の説明不足と勉強不足があったため、再度、質問させていただいております。
前回、私の拙い説明ながらも、ご回答くださった方には感謝しております。
ありがとうございました。


2000年4月から2007年6月までにおける、1ヶ月ごとの個人所属調査データがあります。
どこの所属(所属数11都道府県)に、どれくらいの期間いたのか、その件数を半年ごとに集計してカウントできればと思います。
2000年4月から2007年6月までの間に、入社・退職をしている人も多いです。

<元データ>
------2000/4/1---2000/5/1---2000/6/1---2000/7/1---2000/8/1---中略---2007/4/1---2007/5/1---2007/6/1
Aさん---福島-------福島-------富山--------富山-------新潟--------------新潟-------------------------
Bさん-------------愛媛--------愛媛--------佐賀-------佐賀-----------------------------------------
Cさん-------------広島--------鳥取--------鳥取-------鳥取--------------鳥取---------岐阜------岐阜
Dさん-------------------------東京--------大阪-------東京--------------京都---------京都--------
…以下3000名ほど。


上記のデータを基に、以下のような項目で件数を示したいです。


------------広島----福島----東京----富山----新潟-----愛媛---(全部で11都道府県あり)
~6ヶ月
6-12ヶ月
12-18ヶ月
18-24ヶ月
…以下80ヶ月くらいまで

中には同じ人が「広島ー広島ー高知ー高知ー広島ー広島」のように、同じ所属に戻る場合があります。
この場合、「広島」、「~6ヶ月」の欄には1件ではなく、2件としてカウントしたいです。
なので、人数ではなく、「同じ所属にいた期間別の件数」を見たいです。
福島に滞在する期間の件数、東京に滞在する期間の件数を、6ヶ月ごとにカウントしたいと思います。

説明が分かりにくく、申し訳ございません。
もし、エクセルVBAで上手く出来る方法があれば、ご教授ください。
よろしくお願い致します。
Yahoo!知恵袋 5988日前
コメントする
お気に入り
1
質問者が選んだベストソリューション
いろいろな方法が考えられると思いますが、まあひとつの例として

Public Function Sample(rngBranches As Range, rngBranchList As Range)
Dim intTerms As Variant, strBranches As Variant
Dim R As Range
Dim strBefore As String, intC As Integer
Dim X As Integer, Y As Integer
X = rngBranches.Columns.Count 6
Y = rngBranchList.Columns.Count - 1
ReDim intTerms(X, Y)
For Each R In rngBranches
If R = strBefore Then
intC = intC + 1
Else
If strBefore <> "" Then
' On Error Resume Next
Y = Application.WorksheetFunction.Match(strBefore, rngBranchList, 0) - 1
X = (intC + 1) 6
intTerms(X, Y) = intTerms(X, Y) + 1
End If
intC = 0
strBefore = R
End If
Next
Sample = intTerms
End Function

こんなユーザー関数はどうでしょうか。
やってることは単純で、適当な大きさの2次元配列をつくり、ループをまわして前のセルと内容が変わったら配列の値を+1していってるだけです。

たとえば、Sheet1のA1:CJ3000 に元データの表があるとします。(1行目とA列は見出しなので、純粋なデータは B2:CJ3000)
そして、別のシートの B1:L1 に都道府県名が入っていて、B2:L16 に集計結果を入れたいとします。
その場合、上で示したユーザー関数が定義してあれば、別シートの B2:L16 に
=Sample(Sheet1!B2:CJ3000,Sheet2!B1:L1)
という数式を配列数式として入力します。
一つ目の引数が元データの範囲、二つ目の引数が集計する都道府県名の見出しの範囲です。

--------注--------
よく分からなかったのですが一番上の行に集計すべきなのは6ヶ月未満で良かったでしょうか。
6ヶ月以下なのなら
X = (intC + 1) 6

X = intC 6
に変えてください。
あと、ぜんぜんエラー処理してません。リストにない都道府県名が出てきたときの処理とかは適当に工夫して付け足してください。

補足

よく考えたら、これじゃだめだ・・・。
元データの最後の列を空白にしておけば上記のままでうまくいくはず。
そうでないとたとえばA氏の2007/6/1 の勤務地と、Bさんの2000/4/1が同じだと、うまくいかないです。
まあサンプルですんで多目にみて、必要なら適当に改良してくださいませ。
Yahoo!知恵袋
シェア
 
コメントする
 

参考になったと評価
  このQ&Aは参考になりましたか?

Share (facebook)
その他の解決方法を知っていますか?
回答する
全般
25
Views
質問者が納得単純に並び替えだけならペイントでもできますが、透明色に関してはペイント使わないほうがいいです。ペイントじゃ一部の色以外透明色に設定できません。 2000の素材は256色画像なので256色で編集できるドットエディタで編集したほうが早いです。 EDGEなどのドットエディタで開いてみれば1番左上の色が透明色になってます。 (透明色は大抵背景色として使われている色が指定されていると思います。) 単純に並び替えても2000のマップは16*16、VX Aceは32*32なので一マスのサイズが倍になっていることも注意が...
3537日前view25
全般
33
Views
質問者が納得>最初充電したときはできましたが、それから2回目やろうとしたらできなくなりました。 単なる電池切れでしょうね。電池を入れ替えてみましょう。 (ちなみに、電池で動く全ての物について共通しますが、調子が悪いと思ったらまず新品の電池を入れることです。「なんか調子悪い」という相談の9割は電池が原因です) どんなタイプか知りませんが、単3電池×4本という前提で回答しますと、 ◇アルカリ電池・・・iPhone の7割前後の充電量を確保できる (※ 電池によって大きく変動するので参考程度に) ◇エネループ・・・・...
3572日前view33
全般
36
Views
質問者が納得申し訳ないんですが、私は自宅作業ではMAC環境は使っておらず、DAWもProtoolsは使っていません。 自宅以外の場所では、MAC+Protools環境を触ることも無いことは無いですが、機器関係のセットアップは済んだ状態でコンソールを触るだけで、コントローラも現場に完備のものを使うだけなので、BCF2000は使っていません。 (フィジコンモードのデジタルミキサーがスタンバイしてあるので、何もBCF2000なんか持ち込む必要がない場所に限るため) なので、ちょっと自信がないんですが・・・ 私が持っている...
3652日前view36
全般
26
Views
質問者が納得PC[USB端子]→USBケーブル→DA-100ーイヤホン/ヘッドホン と単純にしてはどうですか? 私は、DA-200を使っておりますが、ノイズはありません PC[USB端子]→USBケーブル→DA-200ーイヤホン/ヘッドホン 恥ずかしながら、いまだに、itunesを使っています。
3755日前view26
全般
46
Views
質問者が納得普通にReplayGainを使えばいいのでは? ・事前にMIDIファイルの音量解析をしておく (右クリック > ReplasyGain > Scan per-file track gain) ・変換の際に、ProcessingにてReplayGainを有効にする (mode=track、processing=apply gain) ・必要なら、上記でPreampのスライダーも調整 これで出力WAVファイルの音量は調整できるはずです。 因みに当方では、仰るような用途にはXMPlayを使ってい...
3742日前view46

関連製品のQ&A