![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
セルの文字列を取り出して一つのセルに入れる方法
こんにちは。
VBAの初心者のものです。
データ整理をしていたのですが、
次の様な場合、どのようにすればいいでしょうか。
例)
年度別、都道府県別の地震の発生件数のデータがあります。
これで1999年の地震が起こった都道府県を抽出するとします。
1999年の列でオートフィルタをかけ別のシートでまとめようと思います。
各年度でオートフィルタをかけて、次のようにまとめます。
1999年 北海道、宮城県、東京都
2000年 新潟県、静岡県、岡山県、石川県
2001年 福島県、宮城県、千葉県
2002年 愛知県、三重県、京都府
なお、都道府県のところはできれば一つのセルにいれたいと考えています。
1999年の場合なら
Range("").value=北海道のセル&"、"& 宮城県のセル &"、"&東京都のセル
各都道府県の行番号が
北海道「1」
宮城県「4」
東京都「13」
ならば、
range("").value = range("A1").value&"、"&range("A4").value&"、"&range("A13").value
というようになればいいのですが、
オートフィルタ後に行数をカウントし、次のようなコードにすると、
range("").value = range("A1").value&"、"&range("A2").value&"、"&range("A3").value
1999年 北海道、青森県、岩手県
となりオートフィルタ前の値が返されてしまいます。
このセルをどのように指定したらいいのかわかりません。
もしこれができないのであれば
各列に一つずつ(一つのセルに一つの都道府県)入れていく方法でも構いません。
1999年 北海道 宮城県 東京都
というような感じです。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
オートフィルタで抽出された行だけ対象にして処理する例です。
ご参考まで。連想配列向けの課題かもしれません。興味を持たれたら、VBA dictionaryでお調べ下さい。
Sub test()
Debug.Print funcTest("1999年")
End Sub
Private Function funcTest(targetYear As String) As String
Dim targetRange As Range
Dim i As Long
Dim prefNames As String
With ActiveSheet
Set targetRange = .Range(.Range("A1"), .Range("A" & .Rows.Count).End(xlUp)).Resize(, 3)
End With
With targetRange
.AutoFilter Field:=1, Criteria1:=targetYear
For i = 2 To .Rows.Count
If .Cells(i, 1).EntireRow.Hidden = False Then
If prefNames = "" Then
prefNames = .Cells(i, 2).Value
Else
prefNames = prefNames & "," & .Cells(i, 2).Value
End If
End If
Next
.AutoFilter
End With
funcTest = prefNames
End Function
参考URL:http://okwave.jp/qa/q5694462.html
遅れて申し訳ございません。
ご回答ありがとうございます。
まだ初心者なので、これはちょっとわかりませんでした・・・
また勉強してみます。
しかしmitarashiさんのコードで「resize」という関数があることを
知り、それと「currentregion」を組み合わせることでうまくすることができました。
No.1
- 回答日時:
元データがどのようになっているのかわかりませんが、わたしでしたら以下のようにしてみます。
オートフィルタは使ってません。
・データの入ってるシートがSheet1、まとめるシートがSheet2 とします。
・Sheet1 の A列が発生年、 B列が都道府県名 とします。
・Sheet2 の A列が発生年、 B列以降、右に都道府県名としています。(ひとつづつデータを入れる)
元データを上から順に、ひとつづつ、まとめシートの該当年のところにデータを飛ばしていきます。
Sub EarthquakeData()
Dim r As Integer
Dim Ws1 As Worksheet, Ws2 As Worksheet
Dim Nen As Integer, Ken As String
Dim NenRow As Integer, NenCol As Integer
Set Ws1 = Worksheets(1)
Set Ws2 = Worksheets(2)
r = 2
Do While Ws1.Cells(r, 1) <> ""
Nen = Ws1.Cells(r, 1).Value
Ken = Ws1.Cells(r, 2).Value
NenRow = Application.WorksheetFunction.Match(Nen, Ws2.Columns(1), 0)
NenCol = Ws2.Cells(NenRow, Columns.Count).End(xlToLeft).Column + 1
Ws2.Cells(NenRow, NenCol).Value = Ken
r = r + 1
Loop
Set Ws1 = Nothing
Set Ws2 = Nothing
End Sub
どうしても県名をひとつのセルに入れたいなら、この振り分け後のものを処理していただくだけです。
遅れて申し訳ございません。
ご回答ありがとうございます。
説明不足でしたが、
横方向に年度、縦方向に都道府県で、
それぞれの年度に何件発生したかというような形態でした。
たぶん、このやり方であればうまくいきそうですが、
データを組直さなければならないので・・・
今回は「currentregion」と「resize」を使って
うまくすることができました。
まだ初心者なのでいろいろな人のコードを見るのは興味深いですね。
Ws2.Cells(NenRow, Columns.Count).End(xlToLeft).Columnというところとか、
Match(Nen, Ws2.Columns(1), 0)とかどういう風に動くのか考えるだけで
勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 転職 長く続けられる好条件の求人でしょうか? 3 2023/07/12 18:45
- 郵便・宅配 北海道版の日刊スポーツとスポーツ報知を購入しましたが1週間以上たっても届きません。 1 2023/02/28 21:34
- メディア・マスコミ 日本はなんで? 右寄り左寄りの地方紙があるんですか? 12 2023/06/21 07:59
- その他(国内) 3時!夜中なのか早朝なのか微妙な時間、5時に出るならシャワー浴びてお茶淹れて神棚、仏壇 2 2022/05/20 03:58
- Visual Basic(VBA) Excel VBA 転記について 2 2023/02/28 08:34
- 地理学 東京都は「東京」、大阪府は「大阪」、静岡県は「静岡」。でも、北海道が「北海」でないのはなぜ? 5 2022/08/16 10:22
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 09:25
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- 地理学 どうして、北海道札幌市や茨城県水戸市などは都道府県と都道府県庁どちらも漢字で表記されているのに対し、 6 2022/07/03 12:21
- その他(宿泊・観光) 北海道札幌市 神奈川県横浜市 愛知県名古屋市 大阪府大阪市 京都府京都市 兵庫県神戸市 福岡市福岡市 3 2023/01/29 18:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
色フィルターをかけた状態で、...
-
エクセルのフィルタをかけると...
-
Excel関数、何がいけないのかわ...
-
エクセルオートフィルタで余計...
-
エクセルで、桁数の異なるデー...
-
オートフィルタで抽出したデー...
-
エクセルを使用してデジタルフ...
-
行番号の文字の色が青色の理由?
-
関数で可視セルのデータ個数カ...
-
エクセルの計算表の下向き三角...
-
Excel2010 フィルタで抽出できない
-
photoshopでフィルタを部分的に...
-
教えて下さい!関数SUBTOTALとC...
-
オートフィルタをしても本当の...
-
excelで奇数の行のみ削除したい
-
フィルタをかけた列のセルの▼マ...
-
UsedRangeを使ってソートするこ...
-
エクセルで特定の列のセルに特...
-
エクセル:色の付いたデータを...
-
EXCELのフィルタオプションで
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで、桁数の異なるデー...
-
エクセルオートフィルタで余計...
-
色フィルターをかけた状態で、...
-
Excel関数、何がいけないのかわ...
-
オートフィルタで抽出したデー...
-
教えて下さい!関数SUBTOTALとC...
-
エクセルの計算表の下向き三角...
-
エクセルのフィルタをかけると...
-
5の倍数の日付だけを抽出したい
-
=SUBTOTAL に =COUNTIF の機能...
-
エクセル:色の付いたデータを...
-
excelで奇数の行のみ削除したい
-
色のついたセルにフラグを立た...
-
エクセルを使用してデジタルフ...
-
【Excel】 可視セルへの貼り付...
-
Excelでオートフィルタ時に交互...
-
行番号の文字の色が青色の理由?
-
Excel2010 フィルタで抽出できない
-
関数で可視セルのデータ個数カ...
-
エクセルでのオートフィルタオ...
おすすめ情報