No.6
- 回答日時:
こんにちは。
ANo2です。解決なさったのかそうでないのかわかりませんが・・・
>帳票の作成方法や形式、処理方法などを見直す
と書いたのは、将来的に考えた場合、質問者様や同僚の方が業務の中にブラックボックスを持ち込まない方が良いという意味も含めています。
元のデータの形式が変えられないのは条件として考えれば良く、自分たちが扱える範囲内で効率よくかつ理解できる方法を模索するのが宜しいと思います。
場合によっては、他部署や他社が協力できる範囲内で、そちらの処理も変更してもらうこともあり得るでしょう。
・・・とはいうものの、ANo4様がすでに関数での回答を示してくださっていますので、行の計算の仕組みさえ理解できればほぼ解決とも言えますね。
停車駅を可変にするには、数をどこかのセルに手入力してそれを参照する式に変えても良いですし、手入力も省きたいのなら、例えばA列で「空白でない行数」-2を算出して停車駅数とすることでも可能と思います。
ただし、この場合は、出力するセルにはA列が使えなくなりますので、表全体を一列右にずらすとか、いっそのこと別シートに作成するなどが良いのかもしれません。
台数(列数)を可変にするには、入力がない場合は出力も空白になるような式にしておいて、あらかじめ関数式を必要そうな最大行までオートフィルしておくといった方法などが考えられます。
(いろいろ便利にすると、だんだん式が長くなっていきますが…)
今さらかも知れませんが、これまでで理解できた範囲内で、同様の処理をマクロ化してみましたのでご参考までに。
※ A列と1行目にはそれぞれ停車駅と号車番号が必ず連続入力されており、最終行(列)の次のセルは空白になっているものと仮定しています。
>データ量が膨大で~~
以下は1シートのみを処理するものですが、「大量のデータ」が別ブックになっているのか別シートなのか等はわかりませんが、複数あるデータを一括で処理してしまうことも可能だと思います。
そのあたりの改変については、お勉強がてらに試してみてください。
Sub Sample()
Dim sorce As Range, rng As Range
Dim rw As Long, col As Long, c As Long
'入力範囲を確認
rw = Cells(1, 1).End(xlDown).Row
col = Cells(1, 1).End(xlToRight).Column
If rw < 3 Or col < 2 Then Exit Sub
'出力範囲を一旦クリア
Cells(1, 1).Offset(rw + 1).Resize(Rows.Count - rw - 1).EntireRow.Delete
Set Source = Cells(3, 1).Resize(rw - 2)
Set rng = Source.Offset(rw)
'各列毎に表を作成
For c = 2 To col
rng.Value = Cells(1, c).Value
rng.Offset(, 1).Value = Cells(2, c).Value
rng.Offset(, 2).Value = Source.Value
rng.Offset(, 3).Value = Source.Offset(, c - 1).Value
' 罫線処理
With rng.Resize(, 4)
Borders.LineStyle = xlContinuous
Borders.Weight = xlMedium
Borders(xlInsideVertical).Weight = xlThin
Borders(xlInsideHorizontal).Weight = xlThin
End With
Set rng = rng.Offset(rw - 2)
Next c
End Sub
fujillin様、アドバイス及びマクロ化ありがとうございます。
返信頂いた内容を理解するまでに時間がかかりそうです。
勉強を含め、トライしてみます。
どうしてもわからないときには、またご質問させていただきます。
ありがとうございました。
No.4
- 回答日時:
添付画像の上表の開始位置は、A1セルですよね?
下表は上表と同じシートにあって、10行目からで良いのですよね?
データ量が広大とのことですが、増えるのは車名ですよね?
停留所は固定で、増えないですよね?
上記の前提で良ければ、次の数式を入力してから下へオートフィルでコピーすれば行けると思います。ちなみに、D10セルは書式設定でお好みの日付としてください。
A10セル =INDEX($1:$1,1,(ROW(A1)-1)/5+2)
B10セル =INDEX($2:$2,1,(ROW(A1)-1)/5+2)
C10セル =INDEX($A:$A,MOD((ROW(A1)-1),5)+3,1)
D10セル =IF(INDEX($1:$7,MOD((ROW(A1)-1),5)+3,(ROW(A1)-1)/5+2)="","",INDEX($1:$7,MOD((ROW(A1)-1),5)+3,(ROW(A1)-1)/5+2))
ママチャリ様、返信ありがとうございます。
表は同じシートに存在します。
試してみたところ、うまくいきそうです。
但しスケジュールがエクセルシート毎に複数存在しており、そのシート毎に停車駅(八重洲、新宿・・・)数が変化致します。
ママチャリ様にお願い致します。
停車駅や車名の増減があるときは、数式のどの部分を変更すればよいのかをご教示頂けませんでしょうか?
何卒宜しくお願い致します。
No.2
- 回答日時:
こんにちは
ご質問の内容はマクロで処理可能と思いますが、
>マクロの知識も皆無で、大変困っております。
ということと
>データ量が膨大で毎日更新する為、コピペでは間に合いません。
の両方を考えると、将来ささいな変更などが出た場合に、お手上げ状態になりかねません。
日常業務とのことですので、業務の効率化のために帳票の作成方法や形式、処理方法などを見直す方がよろしいのではないでしょうか?
アドバイスありがとうございます。もとデータが既に存在しており、そのデータを利用する条件が必須でしたので。今後の仕事の進め方の参考にさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MF-COBOL COBOL 違い
-
自作pcについて
-
exeファイルの実行結果をテキス...
-
三菱 Got 1000
-
WindowsからSSHでサーバーにあ...
-
添付した写真の文字、何で作っ...
-
bashで15分前と現在のエポック...
-
マイクロソフトから通知メール...
-
ユーザーの切り替え時にバッチ...
-
生成AIはブラックジャックが限...
-
Microsoft 365 の購入の誘いが...
-
プロダクトキー
-
バッチファイルで特定のファイ...
-
Windows serverでマルチキャス...
-
デスクトップパソコンのデータ...
-
ドルでの集金について
-
デュアルディスプレイでショー...
-
エクセル VLOOKUP ほかのエクセ...
-
巻取り長さを一定にする
-
Windowsバッチファイルでリモー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マイクロソフトから通知メール...
-
MF-COBOL COBOL 違い
-
自作pcについて
-
添付した写真の文字、何で作っ...
-
生成AIはブラックジャックが限...
-
WindowsからSSHでサーバーにあ...
-
Microsoft 365 の購入の誘いが...
-
バッチファイルで特定のファイ...
-
Python CSVファイルについて
-
なにこのQRコード?!!
-
試用期限付きアプリの使用期間...
-
ドルでの集金について
-
三菱 Got 1000
-
プロダクトキー
-
Windows serverでマルチキャス...
-
Windowsバッチファイルでリモー...
-
pipインストール時にプロトコル...
-
画面設計と帳票設計の違いを教...
-
セルフレジって何の意味がある...
-
エクセルを起動するとグレーな...
おすすめ情報
データには空欄も存在します。空欄はそこに停車しない事になります。