こんにちは。
教えてください!
たとえば、B1のセルに次のように3行でデータが入力されていたとします。
B1「日本
アメリカ
イギリス」
これをそれぞれ分割して次のようにできる関数はありますか?
B1「日本」
B2「アメリカ」
B3「イギリス」
それが簡単にできると仕事がスムーズになるので助かります。
もし次のことも解決できる方法があれば教えてもらえませんか?
A1「8月30日」
B1「日本、アメリカ、イギリス(3行で入ってます)
C1「出発」
というようなデータがあって、B1をそれぞれの国で分割して、A1とC1のデータをアメリカが入っている行、イギリスが入っている行に自動的にコピーされる。
これは関数ではなくて、マクロになるのかな?とも思うのですが、「分割が行われた行までコピー」というやり方がさっぱりわからないでいます。(その前に分割する方法が分からないんですけど・・・)
ちなみに、データがずらーっと並んでいるリストの一部にあるB1のようなデータを整理したいというのが、目的になります。
どうぞ宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
こんにちは。
よくよくテストして下さい。
Sub Sample()
Dim nLastRow As Long
Dim i As Long
Dim j As Long
Dim s As String
Dim v
nLastRow = Cells(Rows.Count, "A").End(xlUp).Row
Application.ScreenUpdating = False
For i = nLastRow To 2 Step -1 ' // 2行目まで
s = Cells(i, "B").Text
If Len(s) > 0 Then
v = Split(s, vbLf) ' // セル内改行で配列化
If UBound(v) > 0 Then
Rows(i + 1).Resize(UBound(v)).Insert
For j = 0 To UBound(v)
Cells(i + j, "A").Value = Cells(i, "A").Value
Cells(i + j, "B").Value = v(j)
Cells(i + j, "C").Value = Cells(i, "C").Value
Next
End If
End If
Next
End Sub
No.8
- 回答日時:
1.セル B1 を例えばセル E1 にコピー&ペースト
2.セル E1 を選択して、[データ]→[区切り位置]を実行
3.“カンマやタブなどの…に区切られたデータ”に目玉入れて[次へ]
をクリック
4.“その他”の右側のボックス内にマウスカーソルを置いて Ctrl+J
をパシーッ
5.[完了]をクリック
6.範囲 E1:G1 を選択して[コピー]
7.セル B1 を選択して、[編集]→[形式を選択して貼り付け]を実行
8.“行列を入れ替える”にチェックを入れて[OK]をクリック
9.範囲 A1:C3 を選択
10.[編集]→[ジャンプ]→[セル選択]を実行
11.“空白セル”に目玉を入れて[OK]をクリック
12.キーボードから =A1 を入力して Ctrl+Enterキーを「エイヤッ!」
と叩き付け
No.6
- 回答日時:
横道に外れてすみません。
A No.5のn-junさんのご質問に対してですが、
#2→#3の間違いです。申し訳ありません。
No.4
- 回答日時:
久しぶりに真面目に関数を考えてみました。
やはり#1のVBAの方が好きですね。小難しいのはどちらも同様だと思います。#2とやっている事は同じですが、中間結果のセルの値を使用していないところが違いです。(だから優れていると言う訳ではありませんが)
=LEFT(A1,SEARCH(CHAR(10),A1)-1)
=MID(A1,SEARCH(CHAR(10),A1,1)+1,SEARCH(CHAR(10),A1,SEARCH(CHAR(10),A1,1)+1)-SEARCH(CHAR(10),A1,1)-1)
=MID(A1,SEARCH(CHAR(10),A1,SEARCH(CHAR(10),A1,1)+1)+1,LEN(A1)-SEARCH(CHAR(10),A1,SEARCH(CHAR(10),A1,1)))
No.3
- 回答日時:
もとにあるB1のデータを「日本」してしまうと、他に元データを置いておかない限り分割ができないのでB2,B3,B4に分割していきます
B2にはMID(B1,1,FIND(CHAR(10),B1,1))
B3にはMID(B1,FIND(CHAR(10),B1,1),FIND(CHAR(10),B1,FIND(CHAR(10),B1,1)+1)-FIND(CHAR(10),B1,1))
B4にはMID(B1,FIND(CHAR(10),B1,FIND(CHAR(10),B1,1)+1)+1,LEN(B1))
と入れてみて下さい。
2つめの質問については自動的にコピーということになるとマクロを使うことになります。
No.2
- 回答日時:
Sub test()
Dim i As Long, j As Integer
Dim k As Long
Dim v, w, x
With Worksheets("Sheet1") 'シート名変更要
v = Range(.[A1], .Cells(Rows.Count, 1).End(xlUp).Resize(, 3)).Value
End With
ReDim x(1 To 3, 1 To 1): k = 1
For i = 1 To UBound(v, 1)
w = Split(v(i, 2), vbLf)
For j = 0 To UBound(w)
x(1, k) = v(i, 1)
x(2, k) = w(j)
x(3, k) = v(i, 3)
k = k + 1
ReDim Preserve x(1 To 3, 1 To k)
Next
Next
With Worksheets("Sheet2") '書き出すシート
.Range("A:A").NumberFormat = "m""月""d""日"""
.Range("A1").Resize(k - 1, 3).Value = Application.Transpose(x)
End With
Erase v, w, x
End Sub
ご参考まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) エクセルで月末、月初の判定をしたい。 4 2022/05/18 23:22
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) エクセル関数教えてください 3 2022/06/21 10:22
- Excel(エクセル) エクセルで住所と建物名を分けるには? 5 2022/09/08 14:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの画面で十字マークが...
-
エクセルで連続データから、数...
-
excelで、スクロールをすると限...
-
エクセルでカーソルが四方に矢...
-
Shift押しながら、矢印ボタンで...
-
セルをクリックすると付箋のよ...
-
エクセル 画面上の行数を調節...
-
EXCEL アルファベットと数字の...
-
Excel選択を繰り返すとセルの色...
-
excelで1行ごとに一気に削除す...
-
エクセル 数値を全て「1」にす...
-
エクセルで0を除いて昇順に並...
-
EXCEL オートフィルタの結果に...
-
フィルタを解除した後の表示位置
-
Excelで表のデータを並び替えた...
-
VB2005 DataGridViewでセルデー...
-
Excelで急に動かなくなる
-
ピポットテーブルエラー解決方法
-
EXCELで不規則的に行の高さを変...
-
エクセル エンターキーを押す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelで、スクロールをすると限...
-
エクセルの画面で十字マークが...
-
エクセルで連続データから、数...
-
複数のセルの入力内容を一度に...
-
セルをクリックすると付箋のよ...
-
エクセルでハイパーリンクのU...
-
EXCEL アルファベットと数字の...
-
エクセル 数値を全て「1」にす...
-
Excel選択を繰り返すとセルの色...
-
Excelで表のデータを並び替えた...
-
エクセル 画面上の行数を調節...
-
エクセルでカーソルが四方に矢...
-
エクセルで0を除いて昇順に並...
-
ピポットテーブルエラー解決方法
-
Shift押しながら、矢印ボタンで...
-
excelで1行ごとに一気に削除す...
-
エクセルVBAでセル範囲のデータ...
-
Excelで急に動かなくなる
-
エクセルで任意のセルをクリッ...
-
フィルタを解除した後の表示位置
おすすめ情報