アプリ版:「スタンプのみでお礼する」機能のリリースについて

A列にランダムで発行した数字が10000個あり、それら2つを1組にし数字と
数字の間に/(スラッシュ)が入った状態にB列に移したいと思っています。
A B
45 45/75
75 82/62
82
62
.
.

できれば自動で処理を行いたいのですが、関数もしくはマクロなどで
できるでしょうか?

A 回答 (6件)

こんばんは。


>この作業をワンアクションで実行するにはやはりマクロを勉強しなければ

マクロをお望みとか?以下は、シートモジュールでも、標準モジュールでも構いません。
高速実行します。なお、書式は、文字列にしました。そうしないと、日付と認識して、データが、日付に変わってしまうことがあります。

Sub SampleMacro1()
  Dim r As Range
  Dim i As Long, k As Long
  Dim myRow As Long
  Dim myAr As Variant
  Dim myRet() As String
  Range("A1").Select
  On Error Resume Next
  Set r = Application.InputBox("データの最初の頂点を選択してください。", Type:=8)
  If r = Empty Then Exit Sub
  On Error GoTo 0
  myRow = Range(r, Cells(65536, r.Column).End(xlUp)).Rows.Count
  If myRow = 1 Then Exit Sub '行がひとつだけならやめる
  If myRow Mod 2 = 1 Then
   '奇数なら、ひとつ手前にする
   myAr = Range(r, Cells(65536, r.Column).End(xlUp).Offset(-1)).Value
   Else
   myAr = Range(r, Cells(65536, r.Column).End(xlUp)).Value
  End If
  For i = LBound(myAr, 1) To UBound(myAr, 1) Step 2
   ReDim Preserve myRet(k)
   myRet(k) = myAr(i, 1) & "/" & myAr(i + 1, 1)
   k = k + 1
  Next i
  With r.Offset(, 1).Resize(UBound(myRet, 1) - LBound(myRet, 1) + 1)
   .NumberFormatLocal = "@"  '書式は文字列にする
   .Value = WorksheetFunction.Transpose(myRet)
  End With
End Sub

'--------------------------------
    • good
    • 0

例データA1:A12


A列  B列
11/2
23/4
35/6
47/8
59/10
611/12
7
8
9
10
11
12
B1に=INDEX($A$1:$A$100,ROW()*2-1,1)&"/"&INDEX($A$1:$A$100,ROW()*2,1)
と入れて、A列の半分の行まで複写する。
結果上記B列の通り。
    • good
    • 0

#3のmshr1962です。


>#REF! となってしまったのですが,セル番号などの入力が必要ですか
すみません。)がひとつ抜けてました
=INDIRECT("A"&(ROW()*2-1))&"/"&INDIRECT("A"&(ROW()*2))
    • good
    • 1
この回答へのお礼

できましたっ!
ありがとうございました。
この作業をワンアクションで実行するにはやはりマクロを勉強しなければ
ですね。。。

お礼日時:2005/10/07 20:17

B1=INDIRECT("A"&(ROW()*2-1)&"/"&INDIRECT("A"&(ROW()*2))


でB500までコピーでは如何ですか?
    • good
    • 0
この回答へのお礼

#REF! となってしまったのですが,セル番号などの入力が必要ですか

お礼日時:2005/10/07 20:05

#1です。


B1セルを1万行コピーするのが面倒なときは、
順に以下のキー操作を行ってください。

[Ctrl]+[Home]   (A1セルへ移動)
[Ctrl]+[↓]     (A10000セルへ移動)
[→]         (B10000セルへ移動)
[Shift]+[ctrl]+[↑] (B1~B10000セルを一気に範囲指定)
[Ctrl]+[D]     (一気に下にコピー)
    • good
    • 0

B1セルに


=A1&"/"&A2
と入れて、下にコピーしてみてください。

&は文字列をつなげる演算子です。
    • good
    • 0
この回答へのお礼

説明が足りずすいません。
こちらで実行すると1行づつしか繰り上がらないので75の部分が重なって
しまいました。コピーの仕方に問題があったのでしょうか?
1行目 45/75
2行目 75/82
2行づつ1セットにしたいのですが、よろしくお願いします。

お礼日時:2005/10/07 20:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!