エクセルで下記のように氏名ごとに1行から複数行の行数が割り振られています。
A B C
氏名 出発日 到着日
1佐藤 2/1 2/4
2佐藤 3/1 3/3
3佐藤 8/2 8/15
4小林 5/3 5/4
5田中 1/20 1/25
6田中 1/26 1/28
7田中 2/4 2/6
8田中 6/1 6/30
9田中 11/20 11/23
これらを3行には27行挿入、1行には29行を最後に挿入して必ずどこのかたまりも30行にする方法はありますでしょうか?
お分かりになる方、ご回答よろしくお願いいたします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
おおっ!
#4の方の
>元の日付の入ったデータはなくして、単に、名前だけのリストにします
この考え方、素晴らしいですね。
ただ、「日付の入ったデータ」をどこかに退避させておいて
後で復活するようにすれば完璧です。
この考え方、使えそうです。
なお、私の方はすでに私の考え方でコード作成に成功しています。
No.4
- 回答日時:
ご質問では、表そのものを壊してよいようですから、元の日付の入ったデータはなくして、単に、名前だけのリストにします。
質問は、なるべく最初から詳しく正確にお願いします。特に、最初から熱心に書いくれた人が報われないのは、決して良いことではありません。注意:消されたデータは元に戻りません。
'//
Sub Test1()
Dim rng As Range
Dim ar As Variant
Dim i As Long, j As Long, k As Long
'タイトル行があるかないか、区分け
If Application.CountA(Range("A1:C1")) > 2 Then
k = 2
Else
k = 1
End If
Set rng = Range(Cells(k, 1), Cells(Rows.Count, 1).End(xlUp)).Resize(, 3)
ar = rng.Value
Application.ScreenUpdating = False
rng.EntireColumn.ClearContents
' rng.EntireColumn.Clear ''書式も消してしまうなら、こちらにする
For i = 1 To UBound(ar, 1)
If i = UBound(ar, 1) Then
Cells(j * 30 + 1, 1).Resize(30).Value = ar(i, 1)
ElseIf ar(i, 1) <> ar(i + 1, 1) Then
Cells(j * 30 + 1, 1).Resize(30).Value = ar(i, 1)
j = j + 1
End If
Next i
Application.ScreenUpdating = True
Set rng = Nothing
End Sub
No.3
- 回答日時:
あれ? 1行目にはタイトル「氏名」「出発日」「到着日」が入っていませんでしたか?
1行目にはできるだけタイトル行を入れましょう。そうするとフィルタオプションが使えます。
とりあえず1つの考え方を示します。
Sheet2を作業用シートとして使い、フィルタオプションで重複のない名前データを取り出します。
そして、COUNTIF関数を埋め込み、それぞれの名前がいくつあるかをカウントします。
これが(作業用のシートを使うことが)気に入らないならDictionaryオブジェクトを使ってそれぞれの名前をカウントします。(以下にここまでをコード化してあります。意味を理解してください。)
その後は、Sheet1に1列目を挿入して作業列を確保し、名前の同じグループに連番を振っていきます。
(例.「佐藤」は1、「小林」は2、のように)
次に、データの最終行の続きから30に満たない数だけ、それぞれの番号を追加してゆきます。
最後に1列目で昇順ソートをかけます。
そして1列目を削除します。
以上でできあがるはずです。
マクロの記録をとってもらうと(記録できない操作もありそうだが)参考になるコードを得られます。
Option Explicit
Sub test()
Dim WS1 As Worksheet
Dim WS2 As Worksheet
Dim TargetRng As Range
Dim CountRng As Range
Set WS1 = Worksheets(1)
Set WS2 = Worksheets(2)
WS2.Cells.Clear
Set TargetRng = WS1.Range("A1").CurrentRegion.Columns(1)
TargetRng.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=WS2.Range("A1"), Unique:=True
With WS2.Range("A1").CurrentRegion.Columns(1).Cells
.Resize(.Count - 1).Offset(1, 1).Formula = "=COUNTIF(" & TargetRng.Address(0, 0, xlA1, True) & ",A2)"
End With
End Sub
No.2
- 回答日時:
A列のデータは本当に
「1佐藤」
「2佐藤」
とかなっているのでしょうか?
少なくともA列は連番、B列は名前 となっているべきです。
この回答への補足
回答ありがとうございます。
氏名の左の数字は行番号を表していました。
分かり辛く済みません。
列 A B C
行
1 佐藤 2/1 2/4
2 佐藤 3/1 3/3
3 佐藤 8/2 8/15
4 小林 5/3 5/4
5 田中 1/20 1/25
6 田中 1/26 1/28
7 田中 2/4 2/6
8 田中 6/1 6/30
9 田中 11/20 11/23
↓
列 A
行
1 佐藤
・
・
・
30 佐藤
31 小林
・
・
・
60 小林
61 田中
・
・
・
90 田中
このような形にしたいのですが…よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel ピボットテーブルの表示方法を変更したいのですが、、、(合計値を下部に) 3 2023/06/18 21:10
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- Excel(エクセル) Excelについて 4 2023/03/02 09:24
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- 計算機科学 Excel ある行と列が交わったところにマークを付けるには 7 2023/01/24 08:46
- その他(学校・勉強) 日本語について 3 2022/04/07 22:50
- PHP MySql PHP 2つのテーブルをJOINで結合 user_idで抽出 1 2023/01/03 14:04
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- Excel(エクセル) エクセル 関数 指定の繰り返しの回数 以降(以前)を削除するには、 2 2022/04/24 10:29
- その他(プログラミング・Web制作) Python pandasについての質問です。 日付 名前 ◯月◯日 佐藤 ・ 伊藤 ・ 山田 ・ 2 2022/06/13 17:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでの行数を揃える方法
-
JDBCを使ってdate型へのINSERT...
-
pandasでsqlite3にテーブル作成...
-
エクセルで去年のデータを今年...
-
PHPとMYSQL、DBのデータが空の...
-
EXCELで外部データの取り込みが...
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
-
SELECTした結果に行番号を求めたい
-
フラグをたてるってどういうこ...
-
結合したテーブルをSUMしたい
-
SQLで、Join句で結合したテ...
-
Accessで今日から5日後
-
複数の条件に該当する結果を、...
-
AccessVBAについて テーブルの...
-
DB、キャストとインサートを...
-
既存データをINSERT文にして出...
-
truncate tableを使って複数の...
-
データの入れ替えを同時に行な...
-
SQL*LOADER実行時のロードデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
pandasでsqlite3にテーブル作成...
-
csvデータ不要列の削除をbatフ...
-
VBAでの行数を揃える方法
-
Excel VBAのユーザーフォームで...
-
追加クエリで重複データなしで...
-
【VB】セルが空になるまで処理...
-
マクロでファイルを読み込み、...
-
EXCELで外部データの取り込みが...
-
ListBoxにAddItemする際、重複...
-
JDBCを使ってdate型へのINSERT...
-
ACCESS VBAでSeekメソッドの処...
-
自作アプリからAPIで他のアプリ...
-
MySQLでauto_incrementをつかわ...
-
エクセルで去年のデータを今年...
-
エクセル 2つの列にある値の完...
-
PHPとMYSQL、DBのデータが空の...
-
データテーブルの使い方に関して
-
リストボックスとDataGridコン...
-
【ExcelVBA】範囲選択の方法に...
-
vacummdbについて
おすすめ情報